2017-07-24 140 views
0

我有一個基於狀態列顯示計數的查詢。SQL:在1行中顯示結果

這個查詢:

SELECT t2.id, t1.PDC_ID, t1.STATUS, COUNT(t1.ID) cnt 
    FROM table1 t1, table2 t2 
    WHERE t1.dds_id = t2.id 
    AND T2.ID = 75790 and T1.PDC_ID = 2 
    GROUP BY t1.PDC_ID, t2.id, t1.STATUS 

返回:

ID PDC_ID STATUS  CNT 
75790 2  Active  13 
75790 2  Inactive 3 

是否有顯示主動地位一行求和計數結果和二者的狀態,如一種方式:

ID PDC_ID ACTIVE_CNT ALL_CNT 
75790 2  13   16 

謝謝

回答

2

基本上只是固定GROUP BY並添加有條件聚集:

SELECT t2.id, SUM(CASE WHEN t1.STATUS = 'ACTIVE' THEN 1 ELSE 0 END) as ACTIVE_CNT, 
     COUNT(t1.ID) ALL_CNT 
FROM table1 t1 JOIN 
    table2 t2 
    ON t1.dds_id = t2.id 
WHERE T2.ID = 75790 and T1.PDC_ID = 2 
GROUP BY t1.PDC_ID; 

請注意,我也固定FROM子句中使用正確的,明確的JOIN語法。

+0

謝謝!如果T2.ID列是相同的,則查詢是完美的。假設我有2個ID,我仍然需要看1行。 – JKint

+0

謝謝!如果T2.ID列是相同的,則查詢是完美的。假設我有2個ID,我仍然需要看1行。我仍然可以顯示1行(沒有ID,只有PDC_ID,每個ID有2個計數字段:Active和All)? – JKint