【发布时间】:2021-10-23 10:42:32
【问题描述】:
我一直在寻找这个问题的答案,似乎有很多不同的“解决方案”,没有什么是我正在寻找的。我的以下查询运行良好,但我需要能够以“2021-08-15”格式修改日期,以根据列选择上周日或上周日。我需要能够只运行查询并获得动态结果,而不是每周手动更改日期。这是否可以使用例如当前日期来实现?我所有的尝试都没有结果:
SELECT
RMD.ISSUE_ID,
MAX(CASE WHEN AS_OF_DATE = '2021-08-15' THEN CURRENT.ISSUE_TITLE END) AS CURR_ISSUE_TITLE,
MAX(CASE WHEN AS_OF_DATE = '2021-08-15' THEN CURRENT.MEMBER_IMPACT END) AS CURR_MEMBER_IMPACT,
MAX(CASE WHEN AS_OF_DATE = '2021-08-08' THEN CURRENT.MEMBER_IMPACT END) AS PREV_MEMBER_IMPACT,
MAX(CASE WHEN AS_OF_DATE = '2021-08-15' THEN CURRENT.ISM_STATUS END) AS CURR_ISM_STATUS,
MAX(CASE WHEN AS_OF_DATE = '2021-08-15' THEN CURRENT.ISSUE_OWNER_ORG END) AS CURR_ISSUE_OWNER_ORG,
MAX(CASE WHEN AS_OF_DATE = '2021-08-15' THEN CURRENT.ISSUE_OWNER END) AS CURR_ISSUE_OWNER,
MAX(CASE WHEN AS_OF_DATE = '2021-08-15' THEN CURRENT.ISSUE_APPROVER END) AS CURR_ISSUE_APPROVER
FROM LOD.ISM_ISSUE_SUMMARY_HIST_WKY CURRENT INNER JOIN
LOD.RMD_ISS_REMED_SUMMARY RMD
ON CURRENT.ISSUE_ID = RMD.ISSUE_ID
WHERE AS_OF_DATE IN ('2021-08-08', '2021-08-15')
GROUP BY RMD.ISSUE_ID
HAVING MAX(CASE WHEN AS_OF_DATE = '2021-08-08' THEN CURRENT.MEMBER_IMPACT END) <> MAX(CASE WHEN AS_OF_DATE = '2021-08-15' THEN CURRENT.MEMBER_IMPACT END) ;
如您所见,我对日期有很多依赖关系,但它们都是最近的或上一个星期日。任何帮助或指导都会很棒,感谢您的宝贵时间。
【问题讨论】:
-
您应该可以使用两个SET variable statements 来消除所有日期常量。 Stack Overflow 问题DB2 Between Statement for Last Sunday to This Coming Saturday 应该可以帮助您进行计算。
-
我尝试运行此代码,但它不成功,我之前看过该帖子。
select current date - int((dayofweek(current date))-1) days from sysibm.sysdummy1) select current date + int(7-(dayofweek(current date))) days from sysibm.sysdummy1)DB2 SQL 错误:SQLCODE=-104, SQLSTATE=42601, SQLERRMC=);rom sysibm.sysdummy1;END-OF-STATEMENT, DRIVER=3.57.110