2012-11-06 2 views
1

이 반환별개의 조건

"POSA"열에 대한 조건을 테스트하는 동안 나는, 각 EVENT_ID에 대한 CNT1 및 CNT2를 반환하는 SQL이 원하는대로 다음

EVENT_ID | CNT1 | CNT2

동일한 테이블의 다른 열 "S"가 고유한지 테스트하는 다른 조건을 각 CASE 문에 추가하고 싶습니다. 아래 코드는 다음과 같습니다

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가 고유해야한다는 조건이 있으며 두 번째 부분에 대해서는 "distinctness"가 동일한 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