計上日付が最新のものにフラグをつけたい

計算フィールドで悩んでおります。
やりたいことは以下のようなデータで、同じ商品でも計上日が複数あるので、最新の計上日のみにしたいので、判断するのにフラグをつけたいと思っております。

色々と計算を作成してみましたが、うまくいかず、ご教授いただきたいです。

maxOver関数を使うことでグループの最大値を取得できますので、こちらを利用するのはどうでしょうか

計算フィールド
maxOver_of_date
maxOver(Date,[ID], PRE_FILTER)

newest_flag
ifelse(Date={maxOver_of_date},1,0)

2 Likes

ありがとうございます!

確認と問題がそれぞれあります。

【確認】
私の方でも以下のように計算フィールドの作成を行おうとしていたのですが

ifelse( maxOver(Date,[ID], PRE_FILTER) = Date , 1,0)

でやるとエラーが出て作成ができず質問させていただいておりました。
しかし、わけることでエラーがでずに作成ができました。
こちらはわけて作成が必要なのでしょうか?

【問題】
PRE_FILTERをすることで、すべてのデータから最大を取得してしまうのですが、先にフィルターで計上日の範囲を選択し、選択した日付の中でのmaxを求めたいです。
教えていただいたものだと、フィルターで絞るとやりたい結果にすることができませんでした。

ifelse関数は一行ごとに計算するため、値にグループへの集計であるmaxOverを記入することはできません。そのため、一度計算フィールドを作成する必要があります。

また、集計期間を指定したいのであれば 指定日<=date<=指定日 であれば date,それ以外であれば小さな日付となるような別の計算フィールドを用意し、dateの代わりのそのフィールドを利用することができます。

2 Likes

ifelse関数は一行ごとに計算するため、値にグループへの集計であるmaxOverを記入することはできません。そのため、一度計算フィールドを作成する必要があります。

そうだったのですね。
次回から別で計算するようにします。

指定日<=date<=指定日 であれば date,それ以外であれば小さな日付となるような別の計算フィールドを用意し、dateの代わりのそのフィールドを利用することができます。

ifelse(${dateS}<=Date AND ${dateE}>=Date,Date,20000101)

こちらの計算式を作成し、先ほどのmaxOverの日付を変更したところ、やりたい計算を行うことができました。

ご教授いただき、大変たすかりました。
ありがとうございました。

1 Like