【发布时间】:2017-12-13 17:05:14
【问题描述】:
我正在尝试在 DB2 环境中区分两种情况,如下所示:
select DISTINCT
TLORDER.BILL_NUMBER,
TLORDER.XCHARGES,
TLORDER.CHARGES,
TLORDER.DISTANCE,
TLORDER.CREATED_TIME,
TLORDER.DESTCITY,
(CASE WHEN ODRSTAT.STATUS = '5ARRCONS' THEN MAX(ORDSTAT.CHANGED)
END -
CASE WHEN ODRSTAT.STATUS = 'PICKD' THEN MIN(ODRSTAT.CHANGED)
END) AS DETENTION
FROM ODRSTAT
LEFT JOIN TLORDER ON ODRSTAT.ORDER_ID = TLORDER.DETAIL_LINE_ID
我使用各种在线资源尝试了这个概念的一些变体,并找到了许多求和但没有使用相同列的差异的答案。
如果 Col. STATUS 中的状态为“5arrcons”,则目标是如果 Col.Status 中的状态为“pickd”,则从最新日期(在同一 col CHANGED 中)减去最旧的日期(在 col.CHANGED 中) /p>
考虑以下数据集:
Key ORDER_ID STATUS CHANGED
1 10 5ARRCONS 12/10/2017
2 10 OTHER 12/10/2017
3 10 PICKD 12/5/2017
4 10 OTHER 12/3/2017
5 10 PICKD 12/1/2017
在这种情况下,CASE 语句的所需结果将是 最大值 = 2017 年 12 月 10 日 最小值 = 2017 年 12 月 1 日
所以 (12/10/2017 - 12/1/2017) 等于 9
9 是我想要的返回值
我们将不胜感激。
谢谢你的时间
【问题讨论】:
-
编辑您的问题并提供示例数据和所需的结果。您的非工作 SQL 代码实际上没有意义。
标签: sql db2 difference case-when