包含以下数据
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中的查询是否可以做到?如果您可以查询如何显示如上图所示的数据
* )抱歉我无法显示图片,因为我的声誉较少,无法显示图片,因此我提供了图片的链接
答案 0 :(得分: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;
作为解释:只有当字段不为空时,解码才会在字段后面添加逗号。在不需要whitelist_jenis_iklan
之后,昏迷和listagg知道处理它的逗号。