日期:2014-05-16  浏览次数:21122 次

(在线跪求)ORACLE如何将查询出的结果行转列
有两个表,分别为表A和表B,其中表A的结构为
ID 行政区代码 交易状态,表B的结构为行政区代码 行政区名称
我现在要根据输入的行政区名称,找到该行政区对应的ID,并且统计同一交易状态的数量,并且显示出来
SQL语句:
select COUNT(*) ZS,A.JYZT,B.XZQNAME FROM A JOIN B ON A.XZQID=B.XZQID WHERE B.XZQID='41000'
GROUP BY A.JYZT,B.XZQNAME
我查询出来的效果是:
ZS JYZT XZQNAME 
1 41 湖南
2 41 湖北
2 42 湖南
我想要的效果是:
ZS JYZT ZS JYZT .... XZQNAME
1 41 2 42 湖南
2 41 0 42 湖北

求指导 求高玩解答 在线急等

------解决方案--------------------
with tb as (
select 1 as zs, 41 as jyzt, '湖南' as XZQNAME from dual
union
select 2, 41, '湖北' from dual
union
select 2, 42, '湖南' from dual
)
select XZQNAME,
sum(case when jyzt = '42' then zs else 0 end) as F_42,
sum(case when jyzt = '41' then zs else 0 end) as F_41
from tb group by XZQNAME

--
XZQNAME F_42 F_41
1 湖南 2 1
2 湖北 0 2