0

重複の可能性:
Oracleで複数の行をコンマ区切りのリストに結合するにはどうすればよいですか?

次の方法でデータを格納するテーブルがあります-

60333,120102,20120502,010000,1,2

60333,120102,20120502,020000,3,4 

60333,120102,20120502,030000,5,6 

60333,120102,20120502,040000,7,8 

61663,120103,20120502,010000,9,10 

61663,120103,20120502,020000,11,12 

61663,120103,20120502,030000,13,14 

61663,120103,20120502,040000,15,16 

60333,120102,20120503,010000,17,18 

60333,120102,20120503,020000,19,20 

60333,120102,20120503,030000,21,22 

60333,120102,20120503,040000,23,24 

私は以下のような出力を表示することが期待されています:

60333,120102,20120502,1,2,3,4,5,6,7,8

60333,120102,20120503,17,18,19,20,21,22,23,24

61663,120103,20120502,,9,10,11,12,13,14 ,15,16

一意の60333,120102および日付の場合、すべてのデータを4行ではなく1行で表示する必要があります。

4

2 に答える 2

1

これを試して:

select a, b, c, listagg(e || ',' || f, ',') WITHIN GROUP (ORDER BY e) as x
from tbl
group by a, b, c

ライブ テスト: http://www.sqlfiddle.com/#!4/40a4b/13

于 2012-05-06T23:33:12.273 に答える
0

仮定すると、次のようになります。

  1. 4 番目の列は 4 つの値 (010000、020000、030000、040000) のみを取ることができます。
  2. 出力に常に11列が必要です

次に、次のような「ピボットクエリ」が必要です。

select c1, c2, c3, 
    max(decode(c4, '010000', c5)) as c5for010000,
    max(decode(c4, '010000', c6)) as c6for010000,
    max(decode(c4, '020000', c5)) as c5for020000,
    max(decode(c4, '020000', c6)) as c6for020000,
    max(decode(c4, '030000', c5)) as c5for030000,
    max(decode(c4, '030000', c6)) as c6for030000,
    max(decode(c4, '040000', c5)) as c5for040000,
    max(decode(c4, '040000', c6)) as c6for040000
my_table
group by c1, c2, c3;
于 2012-05-06T23:18:20.107 に答える