DB2 中联合查询的重复数据删除

Posted

技术标签:

【中文标题】DB2 中联合查询的重复数据删除【英文标题】:Dedup from union Query in DB2 【发布时间】:2019-09-26 19:02:16 【问题描述】:

在联合中,我有来自两个可能相似的系统的记录,我不在乎来自哪个表,但我只需要保留一个并删除另一个。

这是表格的样子:

Select Agent, ID, System Name, APPID, Sum(Count) From Table 1
Union All Select Agent, ID, System Name, APPID, Sum(Count) From Table 2

【问题讨论】:

【参考方案1】:

UNION 而不是 UNION ALL 将完成这项工作

你也可以使用

with base as (
Select Agent, ID, System_Name, APPID, Sum(Count)  as count From Table 1
Union All Select Agent, ID, System_Name, APPID, Sum(Count) as count From Table 2
)
, temp as  (
select Agent, ID, System Name, APPID, count
       row_number() over (partition by Agent, ID, APPID) as rownum
from base
)
select Agent, ID, System Name, APPID, count
from temp
where rownum = 1 

由于目前缺少 iSeries,我尚未对其进行测试,但至少我希望这个想法应该清楚

补充:如果您需要有一定的排序偏好,您还可以在 PARTITON BY 之后添加 ORDER BY

【讨论】:

很遗憾没有因为系统字段名称,我仍然需要显示。 您也可以使用 row_number 函数并将其过滤到 rownum = 1 谢谢我用了你的答案并想通了!

以上是关于DB2 中联合查询的重复数据删除的主要内容,如果未能解决你的问题,请参考以下文章

left join 右表多条数据重复

从 MS-Access 中联合选择查询中的 SQLite 语法错误

Mysql查询重复数据并按条件删除重复行

DB2 for LinuxUNIX and Windows 中重复数据删除设备的完整支持

mybatis中联合查询

sql注入中联合查询group_concat位置