2012-11-06 127 views
1

我有一个返回每个事项标识一个CNT1和CNT2一个SQL,而列测试条件“POSA”不同条件case语句

这将返回以下根据需要:

事项标识| CNT1 | CNT2

我想为每个CASE语句添加另一个条件,用于测试同一个表中的另一列“S”是否不同。下面的代码片段:

SELECT Event_ID, 
sum 
(CASE WHEN POSA IN ('SX', 'DX') THEN 1 
    ELSE 0 
END) 
AS cnt1, 
sum 
(CASE 
    WHEN POSA IN ('SP', 'DP') THEN 1 
    ELSE 0 
END) AS cnt2 


FROM Station_Processed_Info GROUP BY EVENT_ID; 
+1

一些示例数据将使其更清楚。 – Laurence

+0

是否有可能在单个EVENT_ID组中有多个S值?另外,在查找S的重复值时,是否只想查看当前的EVENT_ID组或整个表格? – JohnLBevan

+0

John,在Event_ID组中可能有多个S值,但条件是每个S应该是不同的,关于第二部分,“独立性”应该只在同一个Event_ID组内。非常感谢。 – vsstage

回答

1
SELECT Event_ID, 
SUM(CASE 
    WHEN POSA IN ('SX', 'DX') THEN 1 
    WHEN DISTINCT("S") THEN something 
    ELSE 0 END) AS cnt1, 
SUM (CASE 
    WHEN POSA IN ('SP', 'DP') THEN 1 
    WHEN DISTINCT("S") THEN something 
    ELSE 0 END) AS cnt2  
FROM Station_Processed_Info GROUP BY EVENT_ID; 
+0

您可以将多个WHEN子句添加到CASE语句中。 – Shawn