oracle 列转行(把一个表的所有列连成一行,用逗号分隔)

          做选厂比价页面的时候,期望根据日期段查询出有:询价单号,询价单件号集合,供应商集合 等字段的列表信息,供用户参考以明白应该对哪个询价单进行选厂。询价单件号集合需要将 询价单下的件号从列转成行,且用逗号相连。即

                    enqNo                       pn                                                                    enqNo                       pn       

           20101201A08779001         387                                                            20101201A08779001     387,432,450    
           20101201A08779001         432                          转成 -》                     20101201A08779002     002A0001-33,432    

           20101201A08779001         450     

           20101201A08779002        002A0001-33

          20101201A08779002          432

          从网上找了都是关于decode的方法实现的列转行,后来发现了用orcale的wmsys.wm_concat方法可以轻松的实现,下面的范例是网上找的:wmsys.wm_concat要10g以后才可以。

     表结构:
     1  A
     1  B
     1  C
     2  A
     2  B
     3  C
     3  F
     4  D
     转换后变成:     
     1  A,B,C
     2  A,B
     3  C,F
     4  D

          方法:

     假设你的表结构是tb_name(id, remark),则语句如下:

     SELECT 
       a.id,
       wm_concat (a.remark) new_result
     FROM 
     tb_name a
     group by 
     a.id



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值