在 DB2 中进行旋转

Mik*_*ike 4 sql db2 pivot

我必须将 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)

查询有点困难,可以帮忙吗?

Luk*_*der 6

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)