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 中联合查询的重复数据删除的主要内容,如果未能解决你的问题,请参考以下文章
从 MS-Access 中联合选择查询中的 SQLite 语法错误