次のようなテーブルがあります。
TABLE: FACTS
ID KEY VALUE
1 name Jeremy
1 height 5'11
1 awesomeness 10
2 name Mark
2 awesomeness 4
3 height 4'6
したがって、(ID,KEY) タプルは主キーと見なすことができます。
次のような行を返そうとしています:
ID NAME HEIGHT AWESOMENESS
1 Jeremy 5'11 10
2 Mark (null) 4
3 (null) 4'6 (null)
では、列ごとにサブ選択を行う以外に、キー値が存在する場合、それらを取得して単一の行に収集するにはどうすればよいでしょうか? これまでに試したことは次のとおりです。
SELECT
id,
CASE WHEN facts.key = 'name' THEN value END name,
CASE WHEN facts.key = 'height' THEN value END height,
CASE when facts.key = 'awesomeness' THEN value END awesomeness
FROM
facts
WHERE
facts.id in (1,2,3)
しかし、明らかな理由から、これは ID ごとに 1 行ではなく、一致するキーごとに 1 行を返します。
これを希望どおりにするにはどうすればよいですか?
ありがとう!