部門間の給与支払いのテーブルがあります (「Y からの日数」= 年始からの日数、「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
、1 つの部門で機能する正しい累積メジャーを作成できます。
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
各月の補正を正しく計算し、合計を正しく取得するメジャーを作成するにはどうすればよいですか?
(したがって、基本的には、各部門(または他のディメンション) の最後の修正を調べ、すべてのディメンションにわたる最後の修正ではなく、これらの合計を使用します)