日期:2014-05-17  浏览次数:21385 次

oracle列转行,以逗号分隔,并且数据是根据2个字段分组!
oracle列转行,以逗号分隔,并且数据是要分组的! 这个研究了一天了,简单的,不分组或者根据一个字段分组的是没有问题的,但是问题是要根据两个字段分组,试了好长时间数据总是不正确,so~ 只能来求助了!

主表结构A:eid 表计id,beid 设备id,
附表B:beid 设备id,bid 建筑物id
两个表left join值为:
eid beid bid
201 1 1
201 2 4
201 5 4
201 6 4 
201 3 15
201 4 28
202 10 1
202 11 1
202 12 15

要求查询出来的格式为:
eid beid bid
201 1 1
201 2,5,6 4  
201 3 15
201 4 28
202 10,11 1
202 12 15

------解决方案--------------------

eid beid bid
select eid,wm_concat(a.beid) beid,bid from a left join b on a.beid=b.beid group by eid,bid
union 
select eid,a.beid beid,wm_concat(bid) from a left join b on a.beid=b.beid group by eid,bid
------解决方案--------------------
SQL code

select a.eid,wm_concat(a.beid) beid,b.bid from a left join b on a.beid=b.beid group by a.eid,b.bid;