2012-03-30 5 views
2

Ich habe eine Tabelle in SQLite-Datenbank wie folgt.wie 'Select' für diesen Job zu verwenden

 

    id status 

    ============= 
    x  0 
    y  1 
    y  0 
    x  1 
    x  1 
    z  0 

Als Beispiel habe ich 3 verschiedene ID mit Status (0/1), und x 3 Mal in der Tabelle gefunden wurde, mit dem Status = 0 für 1 Mal, status = 1 für 2-mal, y wurde 2 mal in der Tabelle gefunden, mit Status = 0 für 1 mal und Status = 1 für 1 mal.

Also, ich möchte 'Select' verwenden, um das folgende Ergebnis zu erhalten, gibt es eine Möglichkeit, diesen Job zu tun? jede Hilfe würde geschätzt werden. Dank

 

    id  sum(status=0)  sum(status=1) total(status) 
    ======================================================== 
    x  1     2    3 
    y  1     1    2 
    z  1     0    1 

Antwort

3

Ich glaube, das sollte funktionieren:

von count als Nullwerte arbeiten, werden nicht gezählt
SELECT id, 
    SUM(CASE WHEN status = 0 THEN 1 ELSE 0 END) AS SUM_STATUS_0, 
    SUM(CASE WHEN status = 1 THEN 1 ELSE 0 END) AS SUM_STATUS_1, 
    SUM(status) AS SUM_STATUS 
FROM TABLE 
GROUP BY id 
+0

Dank, tat diese Arbeit. – user307016

0

Dies sollte auch:

select id, 
    count(case when status = 0 then 1 end) Status0, 
    count(case when status = 1 then 1 end) Status1, 
    count(*) StatusAll 
from t 
group by id 
+0

danke für deine antwort – user307016

Verwandte Themen