SQL切换行导致列

时间:2013-10-16 14:21:25

标签: sql oracle11g toad

我有这个问题:

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

我如何编辑我的查询?

1 个答案:

答案 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