Oracleに次のデータがあります
Number Text
12345 ab
12345 abc
12345 acbd
どうすれば次のように変換できますか:
Number Text1 Text2 Text3
12345 ab abc abcd
OracleでSQLを使用してこれを行う方法は?
複数行のデータを列にローテーションするには、最初に使用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 を参照してください