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

しかし、同じである単一の行を数える必要があるため、 2 ではなく1 として Code返されます。InActiveState GujaratDistrict Jamnagar

どうすればそれを達成できますか?

4

2 に答える 2

1

評価者よりもSUM、を選択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 に答える