db2 - 将两行合并为具有相同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
在此先感谢,克里斯
解决方案
试试这个:
/*
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;
您可以取消注释已注释掉的块并按原样运行该语句。
推荐阅读
- android - Retrofit Android - 将标头添加到现有的 Retrofit 对象
- amazon-web-services - 跟踪在 DynamoDB 表中删除/更新/插入项目的角色/身份
- go - 将 []interface{} 转换为 []string 类型
- html - 滚动时导航栏和徽标保持在一起?
- html - Javascript游戏保存变量
- c# - 如何编辑大文件?
- azure - AZ CLI 无法识别 Azure DevOps 参数
- pytorch - 如何访问序列网络中激活函数的学习参数的值
- file-upload - 找不到模块“postgraphile 插件上传字段”
- r - 性能不佳 Arrow Parquet 多个文件