首页 > 解决方案 > 将两行合并为具有相同ID的一行sql db2

问题描述

我需要以下帮助。

这是我的表:

Id Out AccountNumber 金额键

14587 2 32345678 458.00接受
15672 7 12335678 095.00客户
15672 5 12345678 095.00说明
17672 1 21345678 408.00接受
15672 5672 5 12345678 095.00列表
17672 1 12335678 408.8.8.8.8.8.8.8.8.8.8.8.8. 00 008.8.ard 408.8.8.8.8.8.8.ul

我想要的输出应该是这样的:

Id Out AccountNumber 金额 Item1 Item2 Item3

14587 2 32345678 458.00 接受 NULL NULL

15672 7 12335678 095.00 客户描述列表

17672 1 21345678 408.00 接受 接受 NULL

在此先感谢,克里斯

标签: db2

解决方案


试试这个:

/*
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;

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


推荐阅读