-1

ここに画像の説明を入力

図 01 はデータベース内のテーブルで、図 02 のようにデータを抽出したいと考えています。

どのクエリを使用すればよいですか?

図 02 に示すように、Col_1 の一意の要素が新しいテーブルの列名になり、Col_2 の要素が値になります。

4

1 に答える 1

5

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 を参照してください

于 2013-06-21T11:32:53.050 に答える