db2 如何在当前日期条件下从不同的表中取数?

omvjsjqw  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(160)

我有一个名为WB.Email、WB.DATA和WB. APRIOD的表。我必须从WB.Email中获取数据,条件是:其中当前日期=显示日期-15天;
要查找显示日期,请使用表WB.DATA,选择日期列,其中valid = 'Y',并使用其他条件(选择PERIOD FROM WB.APRIOD WHERE VALID ='Y')
CVALID = 'V'且当前日期=会话开始日期- 15天
最后的查询是什么?
WB.电子邮件:
| 周期|HSID系统|C有效|
| - -|- -|- -|
| 2022年9月15日|一百八十四|第五章|
| 2022年9月15日|一百八十四|第五章|
| 2022年9月15日|一百八十三|第五章|
| 2022年9月15日|一百八十三|第五章|
WB.数据表
| 周期|HSID系统|日期|启动|
| - -|- -|- -|- -|
| 2022年9月15日|一百八十四|2022年3月11日|不|
| 2022年9月15日|一百八十四|2022年3月10日|Y型|
| 2022年9月15日|一百八十三|2022年1月6日|不|
| 2022年9月15日|一百八十三|2022年1月5日|Y型|
WB.APRIOD:
| 周期|有效|
| - -|- -|
| 2022年9月15日|Y型|
| 2021年9月15日|不|
| 2020年9月15日|不|
| 2029年9月15日|不|
预期结果:例如,当前日期为24-02-22,会话开始日期(即,WB.DATA表中SDATE列)为2022-03-10,则结果应如下表所示。
| 周期|HSID系统|C有效|
| - -|- -|- -|
| 2022年9月15日|一百八十四|第五章|
| 2022年9月15日|一百八十四|第五章|

mefy6pfw

mefy6pfw1#

用这个

SELECT * FROM WB.EMAIL E
LEFT JOIN WB.DATA D ON E.PERIOD = D.PERIOD
LEFT JOIN WB.APRIOD A ON D.PERIOD = A.PERIOD
WHERE E.CVALID = 'V'
AND D.START = 'Y'
AND GETDATE() = DATEADD(DAY,-15,D.SDATE)

这里结果只显示Email表,如果你想要diff列,然后在你的列名下面。

相关问题