SQL查询键和值

时间:2019-03-12 17:11:13

标签: sql oracle pivot

我需要编写一个执行以下操作的查询。搜索各种论坛后,我看到“ PIVOT”是实现此目的的方法之一。我仍在尝试使用PIVOT编写查询,但与此同时任何人都可以建议是否还有其他替代方法来做到这一点?

TABLE T1

s_ID | a_ID
------------
 1   |  a1
------------
 2   |  a2
------------

 TABLE T2
a_ID | Key | Value
a1   | k1  | v1
a1   | k2  | v2
a1   | k3  | v3
a2   | k1  | v1
a2   | k2  | v2
a2   | k4  | v4

预期的查询输出:

s_ID | a_ID | k1 | k2 | k3 | k4
---------------------------------
 1   | a1   | v1 | v2 | v3 |
---------------------------------
 2   | a2   | v1 | v2 |    | v4 

1 个答案:

答案 0 :(得分:0)

使用条件聚合

select s_id,t1.a_id, max(case when key='k1' then value end),
max(case when key='k1' then value end),
max(case when key='k2' then value end),
max(case when key='k3' then value end) from table1 t1 join table2 t2 on t1.a_ID=t2.a_ID
 group by s_id,t1.a_id