【发布时间】:2016-07-15 08:41:47
【问题描述】:
我遍历一个数据集,我使用CASE 检查条件(uut_status)是否设置为“通过”。如果设置了该条件,那么我想要记录。如果不是,那我不会。
目前,无论我是否需要,所有记录都将返回。我不想要的将在 case 语句中检查的值设置为 null:
select CASE WHEN UUT_STATUS = 'passed' THEN uut_serial_number END,
CASE WHEN UUT_STATUS = 'passed' THEN uut_status END,
CASE WHEN UUT_STATUS = 'passed' THEN min(START_DATE_TIME) END
from
uut_result
where
(START_DATE_TIME > '2016-06-16 00:00:00' AND START_DATE_TIME < '2016-06-16 23:59:59') and product_id=2513 and BATCH_SERIAL_NUMBER like "12 Initial Response Test"
按 uut_serial_number、uut_status、product_id 分组
按 uut_serial_number asc 排序;
正在返回:
SN123 Passed 2016-06-16 08:50:20
SN124 Passed 2016-06-16 16:46:57
NULL NULL NULL
SN126 Passed 2016-06-16 00:43:59
当我希望它返回时
SN123 Passed 2016-06-16 08:50:20
SN124 Passed 2016-06-16 16:46:57
SN126 Passed 2016-06-16 00:43:59
如何从返回集中简单地排除我不想要的记录?
澄清 - 以 SN456 为例。 SN456 在上午 9 点进行测试。它失败。但是,经过调整后,它在上午 9.30 再次测试并通过了。 SN457 在上午 9.05 进行测试。它通过了。
我们想要的是:
SN457 09:05:00
我们不想要的是:
SN457 09:05:00
SN456 09:30:00
SN456 未通过第一次测试,因此不会出现在第一次通过结果中。
希望它更清楚。
【问题讨论】: