求一sql,内容如下

来源:百度知道 编辑:UC知道 时间:2024/06/14 15:09:36
表T
列A 列B 列C
张三 奖金 200
张三 补助 100
张三 工资 500
李四 油费 400
李四 烟钱 200

要求
检索结果为
张三 奖金,补助,工资 800
李四 油费,烟钱 600

热切盼望您的回答。谢谢先
其实不只有一个T表 是有四个,比如说T1,T2,T3,T4
表结果基本一样,都是A,B,C三列
每个表数据倍儿大。
要从这四张表里面取出上面的结果来
(oracle)

早说你是oracle 哪台简单了
一句话就ok
select 列A,wm_concat (列B ),sum( 列C
) from t group by 列A

with t as
(select
'张三' name, '奖金' xm, 200 je from dual union all
select '张三' name, '补助' xm , 100 je from dual union all
select '张三' name, '工资' xm , 500 je from dual union all
select '李四' name, '油费' xm , 400 je from dual union all
select '李四' name, '烟钱' xm , 200 je from dual

)
select tt.name, t2.xm ||','|| t3.xm||',' || t4.xm, tt.je
from
(select name ,sum(je) je from t group by name) tt
left join
(select t1.*
from (select t.*,
row_number() over(partition by name order by xm) r
from t) t1
where t1.r = 1) t2 on tt.name = t2.name
left join (select t1.*
from (select t.*,