1 年間の各週にオープンになったクライアント ケースを特定するレポートを作成しようとしています。現在、次の SQL を使用して、カレンダーの第 1 週にケースがオープンであったかどうかを示すインジケーターをすべてのクライアントに返します。クライアントには、ケースがオープンかどうかを識別する 2 つの側面があります。MOV_START_DATE と ESU_START DATE は、期間の終了日より後である必要があり、MOV_END_DATE/ESU_START DATE は null または期間の開始日より後である必要があります。
以下のコードは機能しますが、左結合 WK1 をコピーして名前を WK2 に変更して 2 週目の情報を返すことができると思っていましたが、あいまいな名前の列に関連するエラーが発生しています。さらに、レポートに 52 個 (各週に 1 個) のジョインを残すことは特にお勧めできないと思います。
SELECT
A.ESU_PER_GRO_ID,
A.ESU_ID,
A.STATUS,
B.MOV_ID,
B.MOV_START_DATE,
B.MOV_END_DATE,
A.ESU_START_DATE,
A.ESU_END_DATE,
LS.CLS_DESC,
nvl2(wk1.PRD_PERIOD_NUM,'Y','N') as "Week1"
FROM
A
LEFT JOIN B ON B.MOV_PER_GRO_ID = A.ESU_PER_GRO_ID
LEFT JOIN LS ON LS.CLS_CODE = A.STATUS
LEFT JOIN O_PERIODS WK1 ON B.MOV_START_DATE < WK1.PRD_END_DATE
AND (B.MOV_END_DATE IS NULL OR B.MOV_END_DATE > WK1.PRD_START_DATE)
AND A.ESU_START_DATE < WK1.PRD_END_DATE
AND (A.ESU_END_DATE IS NULL OR A.ESU_END_DATE > WK1.PRD_START_DATE)
AND PRD_CAL_ID = 'E1190' AND WK1.PRD_PERIOD_NUM = 1 AND WK1.PRD_YEAR = 2012
WHERE
B.MOV_START_DATE Is Not Null
AND A.STATUS <> ('X')
十分な情報を提供できれば幸いですが、そうでない場合は、喜んで質問にお答えします。ありがとう!
サンプル データ (上記のクエリで生成)
P ID ESU_ID STATUS MOV_ID M_START M_END DESC Week1
1 ESU1 New 1M 01/01/2012 Boo Y
2 ESU2 New 2M 01/03/2012 Boo N
望ましいアウトプット (第 1 週 - 第 52 週)
P ID ESU_ID STATUS MOV_ID M_START M_END DESC Week1 Week2
1 ESU1 New 1M 01/01/2012 Boo Y Y
2 ESU2 New 2M 01/03/2012 Boo N N