【问题标题】:show data from multi column to single row将数据从多列显示到单行
【发布时间】:2012-10-28 07:21:26
【问题描述】:

在我的 oracle 数据库中包含以下数据

http://i1207.photobucket.com/albums/bb476/daniwarrior/data-awal.jpg

我想显示如下所示的数据

http://i1207.photobucket.com/albums/bb476/daniwarrior/data-aKHIR.jpg

Whitelist 列是合并 whitelist_pembayaran 列、whitelist_pemasan 和 whitelist_jenis_iklan

黑名单列正在合并 blacklist_pembayaran 列、blacklist_pemasang 和 blacklist_jenis_iklan

oracle中的查询是否可以做?如上图所示如何查询显示数据

*)对不起,我不能展示图片,因为我的名声不太能展示图片,所以我提供了图片的链接

【问题讨论】:

标签: oracle concatenation pivot string-aggregation


【解决方案1】:

这是组内的字符串聚合和字符串连接。

在 Oracle 11g 中,您可以:

select 
   id_pegawai, 
   listagg(whitelist_pembayaran||whitelist_pemasan||whitelist_jenis_iklan,',') within group (order by id_pegawai)  as whitelist,
   listagg(blacklist_pembayaran||blacklist_pemasang||blacklist_jenis_iklan,',') within group (order by id_pegawai)  as blacklist
from table
group by id_pegawai;

(在 Oracle wm_concat 函数)

但是你必须处理逗号。 下面试试withelist(因为黑名单是同一个代码):

select 
   id_pegawai, 
   listagg(whitelist_pembayaran||decode(whitelist_pembayaran,null,null,',')||
           whitelist_pemasan||decode(whitelist_pemasan,null, null, ',')||
           whitelist_jenis_iklan,',') 
   within group (order by id_pegawai)  as whitelist
from table
group by id_pegawai;

作为解释:只有当字段不为空时,解码才会在字段后放置逗号。在whitelist_jenis_iklan 之后不需要逗号,listagg 知道处理它的逗号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    相关资源
    最近更新 更多