17,380
社区成员
发帖
与我相关
我的任务
分享
SELECT A.工号,A.姓名,A.部门,A.职位...,B.西瓜个数,B.桔子个数,B.香蕉个数
FROM
(select b.userid ID,sum(decode(b.typecode,'z01',b.countday,0)) 西瓜个数,
sum(decode(b.typecode,'z02',b.countday,0)) 桔子个数,
sum(decode(b.typecode,'z03',b.countday,0)) 香蕉个数
from b
group by b.userid) ZB,A
WHERE A.userid=ZB.ID
WITH taba AS(
SELECT 'A0001' userid,'A01' NAME FROM dual UNION ALL
SELECT 'A0002','A02' FROM dual
),
tabb AS(
SELECT 'A0001' userid,12 countday,'Z01' typecode,'西瓜'typename FROM dual UNION ALL
SELECT 'A0002',10,'Z02','桔子' FROM dual UNION ALL
SELECT 'A0002',5,'Z03','香蕉' FROM dual
)
--以上是测试数据,下面是SQL查询语句,表换成你的实际表就可以了
--此只是固定行列转换的,也就是说你 typename如果是不定的,那么要用动态行列转换
--动态行列转换具体参看:http://topic.csdn.net/u/20100109/13/6a10c168-f190-4766-b838-adbf03c4ac7b.html?96900
SELECT a.userid,NAME,
Sum(Decode(b.typename,'西瓜',countday,0)) 西瓜个数,
Sum(Decode(b.typename,'桔子',countday,0)) 桔子个数,
Sum(Decode(b.typename,'香蕉',countday,0)) 香蕉个数
FROM taba a ,tabb b
WHERE a.userid=b.userid
GROUP BY a.userid,a.NAME
--结果:
USERID NAME 西瓜个数 桔子个数 香蕉个数
A0001 A01 12 0 0
A0002 A02 0 10 5