【发布时间】:2015-06-30 08:51:54
【问题描述】:
我的当前查询有问题,我希望根据列获取记录/结果(如果有 3 条状态为新的记录,则我执行的查询的状态示例列的值为新/待处理/已完成,它应该被过滤以仅显示状态为新的 1 条记录)。下面是我当前的查询,它得到了重复的列。
select a.CW_UPD_TMS,
case when a.CW_CRT_UID='AAA' then 'BBB'
else a.CW_CRT_UID end as CW_CRT_UID,
COALESCE(b.CW_S_BR, a.CW_S_BR) as CW_S_BR,
a.CW_TRX_STAT as STATUS,
SUBSTR(a.CW_UPD_TMS,7,2) as day,
SUBSTR(a.CW_UPD_TMS,5,2) as month,
SUBSTR(a.CW_UPD_TMS,1,4) as ayear,
SUBSTR(a.CW_UPD_TMS,9,2) as hours,
SUBSTR(a.CW_UPD_TMS,11,2) as mins,
SUBSTR(a.CW_UPD_TMS,13,2) as secs,
case when cast(SUBSTR(a.CW_UPD_TMS,9,2) as INT) > 12 then 'PM'
else 'AM' end as zone
from TABLEA a
left outer join TABLEB b on a.CW_CRT_UID = b.CW_S_USR
where a.CW_TRX_ID = '20150415110000798'
union
select a.CW_UPD_TMS,
case when a.CW_CRT_UID='AAA' then 'BBB'
else a.CW_CRT_UID end as CW_CRT_UID,
COALESCE(b.CW_S_BR, a.CW_S_BR) as CW_S_BR,
a.CW_TRX_STAT as STATUS,
SUBSTR(a.CW_UPD_TMS,7,2) as day,
SUBSTR(a.CW_UPD_TMS,5,2) as month,
SUBSTR(a.CW_UPD_TMS,1,4) as ayear,
SUBSTR(a.CW_UPD_TMS,9,2) as hours,
SUBSTR(a.CW_UPD_TMS,11,2) as mins,
SUBSTR(a.CW_UPD_TMS,13,2) as secs,
case when cast(SUBSTR(a.CW_UPD_TMS,9,2) as INT) > 12 then 'PM'
else 'AM' end as zone
from TABLEC a
left outer join TABLEB b on a.CW_CRT_UID = b.CW_S_USR
where a.CW_TRX_ID = '20150415110000798'
这是当前结果:
CW_UPD_TMS CW_CRT_UID CW_S_BR STATUS DAY MONTH AYEAR HOURS MINS SECS ZONE
2015062610260746811 happy KLC NEW 26 06 2015 10 26 07 AM
2015062610273984711 happy KLC NEW 26 06 2015 10 27 39 AM
2015062610275762511 happy KLC NEW 26 06 2015 10 27 57 AM
所以现在我该如何更改查询,以便只显示 1 条记录(以 min(CW_UPD_TMS) 显示),因为现在 3 条记录具有相同的状态(新)。
我的预期结果应该是:
CW_UPD_TMS CW_CRT_UID CW_S_BR STATUS DAY MONTH AYEAR HOURS MINS SECS ZONE
2015062610260746811 happy KLC NEW 26 06 2015 10 26 07 AM
对不起我糟糕的英语。
【问题讨论】:
-
执行 UNION 时不必指定 DISTINCT,因为 UNION 会删除重复的行。
-
因此,如果它们的状态不同,您仍然希望看到那些行保留每个组中具有最早时间戳的行吗?
-
不要将日期或时间戳存储为字符,使用 DATE 或 TIMESTAMP 数据类型!
-
另外,
case when b.CW_S_BR is null then a.CW_S_BR else b.CW_S_BR end可以写成COALESCE(b.CW_S_BR, a.CW_S_BR),这样更清楚。 -
也许您需要具有 NEW 状态的“最旧”行?还是“较新”的?
DISTINCT或UNION基本上是在做他们的工作:你提供的三行是不同的。
标签: sql derby squirrel-sql