次のデータを返す以下のselectクエリがあります。
クエリ:
SELECT DISTINCT ALLVW.GP_PAYGROUP,
ALLVW.PRD_END_DT,
TMP.PRD_END_DT
FROM PS_AZ_DFN_ALPRD_VW ALLVW,
PS_AZ_DFMPRP_TMP4 TMP
WHERE ALLVW.GP_PAYGROUP = TMP.GP_PAYGROUP
AND ALLVW.PRD_END_DT < TMP.PRD_END_DT
結果:
PAYGROUP PRD_END_DT PRD_END_DT_1
AMZ_PG_T1 31-JAN-12 31-DEC-12
AMZ_PG_T1 29-FEB-12 31-DEC-12
AMZ_PG_T1 31-MAR-12 31-DEC-12
AMZ_PG_T1 30-NOV-12 31-DEC-12
AMZ_PG_T2 31-JAN-12 31-OCT-12
AMZ_PG_T2 30-SEP-12 31-OCT-12
AMZ_PG_T2 31-MAR-12 31-OCT-12
AMZ_PG_T2 30-APR-12 31-OCT-12
したがって、ここで、forがx = 1になる前に、「x」の期間数であるforeachが必要PRD_END_DT
です。クエリは次を返す必要があります。PAYGROUP
PRD_END_DT_1
PAYGROUP PRD_END_DT PRD_END_DT_1
AMZ_PG_T1 30-NOV-12 31-DEC-12
AMZ_PG_T2 30-SEP-12 31-OCT-12
私は以下を行うのに疲れましたが、すべての助けにはなりません:
SELECT DISTINCT ALLVW.GP_PAYGROUP,
ALLVW.PRD_END_DT,
TMP.PRD_END_DT
FROM PS_AZ_DFN_ALPRD_VW ALLVW,
PS_AZ_DFMPRP_TMP4 TMP
WHERE ALLVW.GP_PAYGROUP = TMP.GP_PAYGROUP
AND ALLVW.PRD_END_DT < TMP.PRD_END_DT
AND 1 =
(SELECT COUNT(XVW.PRD_END_DT)
FROM PS_AZ_DFN_ALPRD_VW XVW
WHERE XVW.GP_PAYGROUP = TMP.GP_PAYGROUP
AND XVW.PRD_END_DT < TMP.PRD_END_DT)
考えられるアプローチを提案してください。あなたの入力に感謝します。