私はSQLを初めて使用し、次のようにテーブルをピボットする方法を考えています。
Col1 Col2 Col3
1 a w
2 a x
1 b y
2 b z
の中へ
Col1 a b
1 w y
2 x z
遊んでGROUP BY
いましたが、一意の行を列に変換できないようです
CASE
これは、次の式を使用した集計関数を使用して実行できます。
select col1,
max(case when col2 = 'a' then col3 end) a,
max(case when col2 = 'b' then col3 end) b
from yourtable
group by col1
SQL FiddlewithDemoを参照してください
PIVOT
関数(SQL Server 2005+ / Oracle 11g +)でRDBMSを使用している場合、クエリは次のようになります(注:以下のOracle構文):
select *
from
(
select col1, col2, col3
from yourtable
)
pivot
(
max(col3)
for col2 in ('a', 'b')
)
SQL FiddlewithDemoを参照してください
これを行う最後の方法は、同じテーブルで複数の結合を使用することです。
select t1.col1,
t1.col3 a,
t2.col3 b
from yourtable t1
left join yourtable t2
on t1.col1 = t2.col1
and t2.col2 = 'b'
where t1.col2 = 'a'
SQL FiddlewithDemoを参照してください
すべてが結果をもたらします:
| COL1 | 'A' | 'B' |
--------------------
| 1 | w | y |
| 2 | x | z |
あなたは次のようなことを試してみるべきです
select * from
(select Col1, Col2, Col3 from TableName)
pivot xml (max(Col3)
for Col2 in (any) )
私は携帯電話を使用しているので、現在機能しているかどうかをテストできません。