我有这个问题:
select f.DesPrefettura AS desPrefettura, a.flagPrefetturaQuestura AS flag, count(a.idAccordo) AS totaleAccordo
from ACCORDO a
inner join PREFETTURA f on f.idProvincia = a.idPrefetturaSottoscrizione
GROUP BY f.DesPrefettura, a.flagPrefetturaQuestura
ORDER BY f.DesPrefettura
给我这个结果:
desPrefettura flag totaleAccordo
AGRIGENTO 0 3
AGRIGENTO 1 86
ALESSANDRIA 0 253
ALESSANDRIA 1 12
相反,我希望:
desPrefettura tot01 tot02
AGRIGENTO 3 86
ALESSANDRIA 253 12
我如何编辑我的查询?
答案 0 :(得分:1)
这可以在SQL服务器中运行,我认为在那里没有任何特定的DBMS,所以这应该可行
select f.DesPrefettura AS desPrefettura,
count(case when a.flagPrefetturaQuestura=0 then a.idAccordo else null end) AS tot01,
count(case when a.flagPrefetturaQuestura=1 then a.idAccordo else null end) AS tot02
from ACCORDO a
inner join PREFETTURA f on f.idProvincia = a.idPrefetturaSottoscrizione
GROUP BY f.DesPrefettura
ORDER BY f.DesPrefettura