1
斂值I有一個表是這樣的:的Oracle SQL - 從多個行
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一行鍵返回一行。
我該如何去按照我想要的方式去做這件事?
謝謝!
10秒,並用相同的查詢稍微整潔版本:/ – 2012-04-26 01:46:02
嘿,你倆打我它 – 2012-04-26 01:52:47
這是偉大的,完美的作品,但我不明白。這裏的邏輯是什麼?爲什麼最大限度地說,而不是最小? (PS這張表支持一個系統,用戶可以創建任意鍵,所以有必要讓它支持像這樣的東西) – Jeremy 2012-04-26 01:57:11