我有一个基本问题:我尝试在SQL中创建一个查询:
Select Date, Status From Table
Run Code Online (Sandbox Code Playgroud)
我的结果是,例如,
2016-06-07 FAILED
2016-06-07 FINISH OK
2016-07-07 FINISH OK
2016-07-07 FINISH OK
Run Code Online (Sandbox Code Playgroud)
是否可以判断2016-06-07中的状态是否为"FAILED",只打印一行失败状态.如果它刚刚完成,打印完成就可以了.我想要这个结果:
2016-06-07 FAILED
2016-07-07 FINISH OK
Run Code Online (Sandbox Code Playgroud)
谢谢,
编辑:我只有2个状态:FAILED和FINISH OK
越来越多的日期和结果:
2016-06-07 FAILED
2016-06-07 FINISH OK
2016-06-07 FINISH OK
2016-06-07 FINISH OK
2016-06-07 FINISH OK
2016-07-07 FINISH OK
2016-07-07 FINISH OK
2016-07-07 FINISH OK
2016-07-07 FINISH OK
2016-07-07 FINISH OK
2016-07-08 FINISH OK
2016-07-08 FINISH OK
2016-07-08 FINISH OK
2016-07-08 FAILED
2016-07-08 FINISH OK
Run Code Online (Sandbox Code Playgroud)
我想拥有:
2016-06-07 FAILED
2016-07-07 FINISH OK
2016-07-08 FAILED
Run Code Online (Sandbox Code Playgroud)
如果我在某个日期有一个FAILED状态,我想打印'FAILED',但如果我没有任何'FAILED'状态,我会打印'FINISH OK',它会更好吗?
使用CASE带条件的agregation.
第一个COUNT是向您展示如何工作.这将计算每个日期组的失败次数.
然后CASE检查是否有1个或更多失败
SELECT Date,
COUNT(CASE WHEN Status = 'FAILED' THEN 1 END) as total_fails,
CASE WHEN Count(CASE WHEN Status = 'FAILED' THEN 1 END) > 0
THEN 'FAILED'
ELSE 'FINISH OK'
END as Status
FROM Table
GROUP BY Date
Run Code Online (Sandbox Code Playgroud)