我有一个返回以下数据下面的选择查询:SQL查询连接不返回行
查询:
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
所以现在,我希望PRD_END_DT
对于每个PAYGROUP
,例如x = 1的PRD_END_DT_1
之前的'x'个周期数,我的查询应返回:
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)
你可以建议可能的方法吧。欣赏你的投入。
我不是特意在这里寻找月份。我只是在寻找前一段时间。前一个日期日期也可能在前一周而不是月份。现在也编辑我的问题。 – 2013-02-14 16:50:08