我需要编写一个执行以下操作的查询。搜索各种论坛后,我看到“ 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
答案 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