如何在SQL WHERE子句中用MAX(DTGR1)计算日期差值筛选数据?
解决方案
直接修改WHERE子句中的子查询部分,通过分组取每个CDCLI对应的最大DTGR1值,再计算日期差值筛选符合条件的记录:
AND ( CDCLI NOT IN (SELECT CDCLI FROM ANCLI07L1) OR CDCLI IN ( SELECT CDCLI FROM ANCL07L1 GROUP BY CDCLI HAVING Days(TIMESTAMP_FORMAT(CHAR($TODAY), 'YYYYMMDD')) - Days(TIMESTAMP_FORMAT(CHAR(MAX(DTGR1)), 'YYYYMMDD')) > 30 ) )
逻辑说明
- 保留原有的「
CDCLI不在ANCLI07L1表中」的筛选条件 - 对
ANCL07L1表按CDCLI分组,用MAX(DTGR1)获取每个客户的最新DTGR1日期 - 在
HAVING子句中计算该最新日期与当前日期$TODAY的天数差,仅保留差值大于30天的CDCLI
内容的提问来源于stack exchange,提问作者user3046528
相关产品推荐
相关产品推荐

