如何合并查询,将同主编号Type24的支付信息关联至Type13行并移除Type24行?
数据填充与行过滤实现方案
原始数据
Main Number Type Invoice Number Amount Payment Date Payment Number ---------------------------------------------------------------------------- 52837 13 365572 4000.00 52837 13 366643 5000.00 52837 24 XXXXX 9000.00 06/10/24 Check 123 52890 13 365590 6000.00 52890 13 384450 2500.00 52890 24 YYYYY 6500.00 06/12/24 Check 441
需求说明
将同一Main Number下Type=24行的Payment Date和Payment Number填充到对应Type=13的行中,同时移除所有Type=24的行,得到目标结果。
实现方案(SQL)
假设合并后的数据表名为union_result,可以通过关联子查询实现:
SELECT t."Main Number", t.Type, t."Invoice Number", t.Amount, p."Payment Date", p."Payment Number" FROM union_result t INNER JOIN ( -- 提取每个Main Number对应的Type24支付信息 SELECT "Main Number", "Payment Date", "Payment Number" FROM union_result WHERE Type = 24 ) p ON t."Main Number" = p."Main Number" WHERE t.Type = 13 ORDER BY t."Main Number", t."Invoice Number";
逻辑说明
- 子查询筛选出所有
Type=24的行,提取每个Main Number对应的支付日期和支付编号; - 原表与子查询结果通过
Main Number关联,仅保留原表中Type=13的行; - 关联后自动将对应
Main Number的支付信息填充到Type=13的行中,同时过滤掉Type=24的行。
注:不同数据库对带空格的列名引用规则不同,比如MySQL用反引号
`Main Number`,SQL Server用方括号[Main Number],请根据实际情况调整。
内容的提问来源于stack exchange,提问作者Brian Branco
相关产品推荐
相关产品推荐

