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