【发布时间】:2012-05-06 18:09:33
【问题描述】:
我有一张这样的桌子:
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 一行。
我怎样才能以我想要的方式得到这个?
谢谢!
【问题讨论】:
标签: sql oracle pivot dynamic-sql