1

请检查下表:

Id    Code     Name      State       District     Status   
-----------------------------------------------------------
1     10001    ABC       Gujarat     Jamnagar       1
2     10002    BCA       Gujarat     Amreli         0
3     10003    XYZ       NJ          ACX            1
4     10001    VBC       Gujarat     Jamnagar       1

我在下面有疑问

SELECT STATE,
    District,
    SUM(CASE 
            WHEN STATUS = 0
                THEN 1
            ELSE 0
            END) Active,
    SUM(CASE 
            WHEN STATUS = 1
                THEN 1
            ELSE 0
            END) InActive
FROM TableA
GROUP BY STATE,
    District

现在它将返回以下结果给我

State   District  Active  InActive
------------------------------------
Gujarat  Jamnagar   0       2
Gujarat  Amreli     1       0
NJ       ACX        0       1

但我需要计算相同的单行Code,所以它将返回InActive1 State GujaratDistrict Jamnagar不是 2。

我怎样才能做到这一点?

4

2 回答 2

1

Rater than SUM, select MAX,因此这些值不会聚合。

于 2012-09-10T05:16:48.567 回答
1

您如何清楚地选择子查询中的所有列?

SELECT STATE,
    District,
    SUM(CASE 
            WHEN STATUS = 0
                THEN 1
            ELSE 0
            END) Active,
    SUM(CASE 
            WHEN STATUS = 1
                THEN 1
            ELSE 0
            END) InActive
FROM (
    SELECT DISTINCT STATE,
        District,
        STATUS
    FROM tableA
    ) a
GROUP BY STATE,
    District

SQLFiddle 演示

于 2012-09-10T05:25:34.037 回答