2017-07-24 77 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