0

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

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

我想显示如下所示的数据

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

白名单列正在合并 whitelist_pembayaran 列、whitelist_pemasan 和 whitelist_jenis_iklan

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

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

* )对不起,我不能显示图片,因为我的声誉不太能够显示图像,所以我提供了图片的链接

4

1 回答 1

0

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

在 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 <= 10g 中你可以使用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;

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

于 2012-11-08T06:19:13.163 回答