我有一张表,其中包含跨部门的工资支付(" Y&#34的天数; =年初以来的天数,"天数到M" =天到月末)
Department | Salary | Date | Type | Days from Y | Days to M
-----------+--------+------------+-----------------+-------------+-----------
Finance | 71 | 01-01-2016 | Regular payment | 1 | 30
Sales | 3000 | 20-01-2016 | Regular payment | 20 | 11
Sales | -300 | 21-01-2016 | Correction | 21 | 10
Finance | 2000 | 01-02-2016 | Regular payment | 32 | 27
Sales | 3100 | 15-02-2016 | Regular payment | 46 | 12
对于定期付款,需要更正工资以呈现为完整月份。但是,在下个月,不得包括上个月的更正(因为它已在新工资中提供) - 只应包括上个月的更正!
对于销售,那将是:
Date | Salary | Salary (cum.) | Correction | Salary (corr.) cum.
---------------------------------------------------------------------------
2016 | 5800 | 5800 | |
2016-01 | 2700 | 2700 | 1650 | 4350
2016-01-20 | 3000 | 3000 | 1650 | 4650
2016-01-21 | -300 | 2700 | | 4350
2016-02 | 2550 | 5250 | 2040 | 7290
2016-02-15 | 2550 | 5250 | 2040 | 7290
计算更正本身非常简单:如果它是定期付款,那么使用该日期来计算给定月份 - 部门组合的更正。
使用LASTNONBLANK
表达式,我可以制作适用于单个部门的正确累积度量:
Salary (corr.) cum := CACLULATE(MAX([Correction]); LASTNONBLANK([Date]; MAX([Correction])
然而,这并不适用于跨部门 - 2016-01会导致错误的总计数器:
Department | Salary | Salary (cum.) | Correction | measure | should be
-----------------------------------------------------------------------
(Total) | 2771 | 3071 | | 4721 | 6851
Finance | 71 | 71 | 2130 | 2201 | 2201
Sales | 2700 | 3000 | 1650 | 4650 | 4650
如何创建一个正确计算每个月更正的度量,并使总数正确?
(所以基本上它会查看每个部门(或其他维度)的最后修正并使用这些的总和而不是所有维度的最后修正) < / p>
答案 0 :(得分:2)
你基本上需要遍历部门。
Salary (corr.) cum :=
SUMX (
Departments,
CACLULATE(MAX([Correction]); LASTNONBLANK([Date]; MAX([Correction])
)
这应该可以解决问题。
阿尔贝托