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;

説明として: フィールドが null でない場合にのみ、デコードはフィールドの後にカンマを置きます。afterwhitelist_jenis_iklanはコンマを必要とせず、listagg はそのコンマを処理することを知っています。

于 2012-11-08T06:19:13.163 に答える