- PR -

SQLで横もちにする方法について

1
投稿者投稿内容
もじそんすくえあ
会議室デビュー日: 2004/10/20
投稿数: 15
投稿日時: 2004-12-15 18:49
分類 製品
01 01
01 02
01 03

上記のような一つの分類に対し、
複数の製品を持ったデータが存在
する場合に
一発のSQLを使用して
データを横もち状態にする方法を
ご教授願えますか?

(結果イメージ)
分類1 製品1 製品2 製品3
01 01 02 03

FallenSun
会議室デビュー日: 2004/11/25
投稿数: 10
投稿日時: 2004-12-16 07:56
もし分類毎の製品の数に上限があって、なおかつ分類と製品の組み合わせに
関して重複レコードが存在しないのであれば、こんな感じでできると思います。

SELECT
   [分類],
   MAX(CASE WHEN [ID] = 1 THEN [製品] ELSE NULL END) AS [製品1],
   MAX(CASE WHEN [ID] = 2 THEN [製品] ELSE NULL END) AS [製品2],
   MAX(CASE WHEN [ID] = 3 THEN [製品] ELSE NULL END) AS [製品3]
FROM (
   SELECT COUNT(*) AS [ID], T1.[分類], T1.[製品] FROM [TABLE] AS T1
   INNER JOIN [TABLE] AS T2
   ON T1.[分類] = T2.[分類] AND T1.[製品] >= T2.[製品]
   GROUP BY T1.[分類], T1.[製品]
) AS T3
GROUP BY [分類]
1

スキルアップ/キャリアアップ(JOB@IT)