将两行合并为具有相同ID sql db2的一行

时间:2020-01-13 20:10:26

标签: db2

我需要以下帮助。

这是我的桌子:

退出帐号编号键

14587 2 32345678 458.00接受
15672 7 12335678 095.00客户
15672 5 12345678 095.00说明
17672 1 21345678 408.00接受
15672 5 12345678 095.00列表
17672 1 12345678 408.00接受

我想要的输出应该是:

Id帐号编号金额Item1 Item2 Item3

14587 2 32345678 458.00接受的NULL NULL

15672 7 12335678 095.00客户描述列表

17672 1 21345678 408.00接受接受NULL

预先感谢, 克里斯

1 个答案:

答案 0 :(得分:0)

尝试一下:

/*
WITH TAB (ID, Out, AccountNumber, Amount, Key) AS 
(
VALUES
  (14587, 2, 32345678, 458.00, 'Accepted')
, (15672, 7, 12345678, 095.00, 'Customer')
, (15672, 5, 12345678, 095.00, 'Description')
, (17672, 1, 21345678, 408.00, 'Accepted')
, (15672, 5, 12345678, 095.00, 'List')
, (17672, 1, 21345678, 408.00, 'Accepted') 
)
*/
SELECT 
  MAX(ID) ID, MAX(Out) Out, AccountNumber
, MAX(Amount) AS Amount  
, MAX(CASE RN WHEN 1 THEN Key END) AS ITEM1
, MAX(CASE RN WHEN 2 THEN Key END) AS ITEM2
, MAX(CASE RN WHEN 3 THEN Key END) AS ITEM3
FROM
(
SELECT 
  ID, Out, AccountNumber, Amount, Key
, ROWNUMBER() OVER (PARTITION BY AccountNumber ORDER BY Key) RN
FROM TAB
)
GROUP BY AccountNumber;

您可以取消注释注释掉的块并按原样运行该语句。