Skip to main content
TOSHIHIRO EBATA 님이 Japan에 질문했습니다

いつも大変お世話になっております。

年月日指定で同月に2回の事象が発生するデータ抽出に関してです。

 

下記のようなデータがあります。

年月日指定で同月に2回の事象が発生するデータ抽出に関して目的は該当月度の期間で在籍情報に関するデータを抽出することです。

課題は

オレンジでマークしてもので2023/8月度に2回在籍に関する情報があります。

パラメータの選択日付は2022/8/11で

この場合2023/8月度に発生した在籍に関する情報を2行表示しかつ発生アクション日・発生アクション日・アクション理由を表示したいです。

Employee Number 3の方です。

それ以外のEmployee Number 3を除く方は

パラメータの選択日付は2022/8/11ですので

2022/8/10の状態の情報を表示したく思います。

この場合は2022/8月度には在籍に関する情報は発生していないので

アクション日・発生アクション日・アクション理由に関しては非表示にする。

 

Employee Number 1-6の2022/8の在籍状態を表示させ、もし2022/8に在籍に関する情報があれば全て表示したく思います。

​イメージとしては赤下線の情報を表示

スクリーンショット 2023-07-24 152336

2022/12/08が選択日付の場合は赤下線の情報を表示したいです。

スクリーンショット 2023-07-24 151654

全体に対するフィルターのかけ方が分からずご協力をお願いしたく思います。

VIZのシートは在籍系_選択日付末在籍となります。

 

何卒よろしくお願い申し上げます。

답변 5개
  1. 2023년 9월 8일 오전 12:14

    下線が引かれた部分の右辺についてですが、

    {FIXED [Employee Number: ]

    とありますので、これは社員番号ごとに何かひとつの集計値を求めようとしていることが分かります。ではその集計値とは何かというと

    MAX(

    があるので求める集計値は最大値です。このMAX関数の中は

    IF [Start Date] < [p_選択日付] AND [End Date] >= [p_選択日付] THEN [Start Date] END

    が入っています。IF文なので条件を満たしたデータの最大値を取ることを意味します。集計対象になるデータは [Start Date] なので最大の日付、つまり在籍情報のなかで最も新しい日付を取ろうとしています。

     

    IF文の条件を見ると、パラメータの選択日付が [Start Date] より大きく [End Date] 以下であるという条件になっています。概念的に書き換えると

    [Start Date] < [p_選択日付] <= [End Date]

    となり、そのレコードが持つ期間の範囲内であるという条件です。これはパラメータの選択日付時点で有効な在籍情報であるという判定になります。

     

    ここまでをつなげると、式の右辺は「パラメータ日付時点で有効な在籍情報のうち、最も新しい [Start Date] を [Employee Number] ごとに特定する」という意味になります。左辺は [Start Date] でこれと右辺はイコールでつなげている判定式なので、パラメータ日付時点で有効な最新のレコードであればTrue、そうでなければFalseを返すことになります。これをフィルタに入れて真(True)のみを保持していますから、その結果有効な最新レコードだけが表示されます。

0/9000