図 01 はデータベース内のテーブルで、図 02 のようにデータを抽出したいと考えています。
どのクエリを使用すればよいですか?
図 02 に示すように、Col_1 の一意の要素が新しいテーブルの列名になり、Col_2 の要素が値になります。
図 01 はデータベース内のテーブルで、図 02 のようにデータを抽出したいと考えています。
どのクエリを使用すればよいですか?
図 02 に示すように、Col_1 の一意の要素が新しいテーブルの列名になり、Col_2 の要素が値になります。
PIVOT関数を使用しrow_number()
て結果を取得できます。
select A, B
from
(
select col_1, col_2,
row_number() over(partition by col_1 order by col_2) rn
from yourtable
) d
pivot
(
max(col_2)
for col_1 in (A, B)
) piv;
SQL Fiddle with Demoを参照してください。
または、CASe 式で集計関数を使用して、行を列に変換することもできます。
select
max(case when col_1 = 'A' then col_2 end) A,
max(case when col_1 = 'B' then col_2 end) B
from
(
select col_1, col_2,
row_number() over(partition by col_1 order by col_2) rn
from yourtable
) d
group by rn;
デモで SQL Fiddle を参照してください