我必须将 DB2 表中的行转置为列。这就是我的表的结构。
ItemID Item Value
---------------------
1 Meeting Now
1 Advise Yes
1 NoAdvise No
2 Meeting Never
2 Advise No
2 NoAdvise Null
2 Combine Yes
Run Code Online (Sandbox Code Playgroud)
我希望将其转置为(请注意,我不想转置组合)
ItemID Meeting Advise NoAdvise
---------------------------------------
1 Now Yes No
2 Never No Null
Run Code Online (Sandbox Code Playgroud)
查询有点困难,可以帮忙吗?
bhamby 当前接受的答案当然是正确的,但值得检查使用多个相关子查询是否比单个组慢得多(提示:很可能是):
SELECT
A.ItemID,
MAX(CASE WHEN A.Item = 'Meeting' THEN Value END) AS Meeting,
MAX(CASE WHEN A.Item = 'Advise' THEN Value END) AS Advise,
MAX(CASE WHEN A.Item = 'NoAdvise' THEN Value END) AS NoAdvise
FROM A
GROUP BY A.ItemID
Run Code Online (Sandbox Code Playgroud)
我认为这也更简单一些
SQLFiddle(在 PostgreSQL 中,但也适用于 DB2 LUW)