Comment devrait être ma requête?

J'ai une table comme celle-ci:

     date, drapeau
     22/05/13 1
     22/05/13 1
     22/05/13 0
     23/05/13 1
     23/05/13 0 

J'ai donc besoin d'une requête où je count dans différentes colonnes les 2 valeurs possibles du drapeau.

     date flag1 flag0
     22/05/13 2 1
     23/05/13 1 1 

Comment dois-je écrire ma requête pour get datatables comme je l'ai montré ci-dessus?

Quelque chose comme ça:

SELECT [date] SUM(CASE WHEN tbl.flag=0 THEN 1 ELSE 0 END) AS flag0, SUM(CASE WHEN tbl.flag=1 THEN 1 ELSE 0 END) AS flag1 FROM tbl GROUP BY tbl.[date] 
 SELECT [date], sum(flag) "flag1", sum(1-flag) "flag0" FROM [table] GROUP BY [date] 

Normalement, j'utiliserais une instruction case à l'intérieur des fonctions SUM (), mais dans ce cas, cela nous permettrait de nous en sortir avec des expressions simples (et plus rapides).

Vous pouvez utiliser la fonction PIVOT pour get le résultat:

 select date, [1] as flag1, [0] as flag0 from yt pivot ( count(flag) for flag in ([1], [0]) ) piv; 

Voir SQL Fiddle avec démo