Analytics Catalog/Workday/Payroll/Labor cost report
Workday · Payroll · Report

Labor cost by month, drillable to a person

The report the module exists for. Cost by department by month, footed to the same total the ledger tie proves, with the unassigned money named instead of spread.

RuleEvery number on this report is an aggregation of the payroll fact, so any cell can be opened to the people inside it.
Neverpublish a labor cost trend the ledger tie has not passed for every month shown. An untied trend is three opinions in a row.
The reportcost by department by month, unassigned named, rows openable.

This is the page the module exists to produce. Total employer cost, by department, by month. The bottom row is the same total the ledger tie proves, so the trend inherits the proof. Departments open to people on click; Sales is shown open.

departmentMar 2026Apr 2026May 2026
Sales2,061,340.002,088,115.002,149,257.31
Alvarez, R.14,890.0014,890.0015,412.50
Chen, M.13,240.0013,760.0013,760.00
141 others2,033,210.002,059,465.002,120,084.81
+Technology Delivery1,377,895.001,391,220.001,410,006.88
112 people1,377,895.001,391,220.001,410,006.88
+Support1,061,110.001,071,995.001,094,035.96
96 people1,061,110.001,071,995.001,094,035.96
Unassigned0.000.009,841.93
Total, ties to ledger4,500,345.004,551,330.004,663,142.08

Two things a delivered trend cannot do are on this table. The unassigned row appears the month it happens, with an amount: money charged to no department, visible instead of spread invisibly across defaults. And every month column footing to a ledger-proved total means a department head arguing with a number is arguing with the books, not with an analyst. Sample values are illustrative, never client data.

The query behind itone aggregation of the fact, nothing else.
-- employer cost by department by month, unassigned kept visible
SELECT COALESCE(cc.cost_center_name, 'Unassigned') AS department,
       d.fiscal_period,
       SUM(f.amount)                               AS employer_cost
FROM fct_payroll_result_line f
JOIN      dim_date          d  ON f.accounting_date_key = d.date_key
JOIN      dim_pay_component c  ON f.pay_component_key   = c.pay_component_key
LEFT JOIN dim_cost_center   cc ON f.cost_center_key     = cc.cost_center_key
WHERE d.fiscal_period BETWEEN '2026-03' AND '2026-05'
  AND c.affects_ledger
GROUP BY 1, 2
ORDER BY 1, 2

The left join to department is the honesty mechanism: an inner join would silently drop unassigned lines, and the report would foot to the wrong total while looking complete. Add worker to the grouping and the same query returns the person level. That is the whole difference between the summary and the drill.

Use case
Problem
Labor cost trends are rebuilt by hand each quarter, never quite match the books, and hide unassigned cost inside defaults, so every review starts with an argument about whose number is right.
What we build
One aggregation of the proven payroll fact: department by month, footed to the tied total, unassigned named, person level one grouping away.
What you get
A trend that inherits the ledger proof, opens to people on click, and surfaces mischarged cost the month it happens instead of the quarter after.
Want the labor trend that ends the whose-number argument?
We ship this report on the proven fact, footed to the books, in your repository.
Talk to us
Terms on this page
employer cost
Gross pay plus the employer taxes and benefit share. What the books carry.
foot
To add a column to its total. A report foots when the pieces sum to the stated total.
unassigned
Cost charged to no department. Named as a row rather than defaulted away.
drill
Opening a summary number to the rows inside it.
left join
A join keeping every row from the first table whether or not the second matches.
fiscal period
The accounting month an amount belongs to.
tie
A check that two independently built totals agree.
fact
A table of measured amounts. Here, pay.