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

将两行合并为具有相同ID的一行sql db2,db2,Db2,我需要下面的帮助 这是我的桌子: Id Out AccountNumber金额键 1458722345678458.00接受 1567212335678095.00客户 15672 5 12345678 095.00说明 17672 1 21345678 408.00接受 15672 5 12345678 095.00列表 17672 1 12345678 408.00接受 我想要的输出应该是: Id Out AccountNumber金额项目1项目2项目3 14587 2 32345678 4

我需要下面的帮助

这是我的桌子:

Id Out AccountNumber金额键

1458722345678458.00接受 1567212335678095.00客户 15672 5 12345678 095.00说明 17672 1 21345678 408.00接受 15672 5 12345678 095.00列表 17672 1 12345678 408.00接受

我想要的输出应该是:

Id Out AccountNumber金额项目1项目2项目3

14587 2 32345678 458.00接受空

1567212335678095.00客户描述列表

17672 1 21345678 408.00接受为空

提前感谢,, 克里斯

试试这个:

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

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

为什么我们不在输出中看到id=17672的行?@markbrainsein,我已更新了所需的输出。id=15672具有不同的帐号。这是不是错别字?@MarkBarinstein,是的,是错别字。“我已经纠正了那个错误。”马克巴林斯坦,是的,这是打字错误。我已经纠正了那个错误。