0

Oracleに次のデータがあります

Number   Text
12345    ab 
12345    abc   
12345    acbd

どうすれば次のように変換できますか:

Number   Text1 Text2 Text3
12345    ab    abc   abcd  

OracleでSQLを使用してこれを行う方法は?

4

1 に答える 1

1

複数行のデータを列にローテーションするには、最初に使用row_number()し、次に CASE 式で集計関数を使用して最終結果を取得します。

select "Number",
  max(case when seq = 1 then "Text" end) Text1,
  max(case when seq = 2 then "Text" end) Text2,
  max(case when seq = 3 then "Text" end) Text3
from
(
  select "Number", "Text",
    row_number() over(partition by "Number" order by "Text") seq
  from yourtable
) d
group by "Number";

デモで SQL Fiddle を参照してください

于 2013-08-20T11:20:15.573 に答える