【问题标题】:Dedup from union Query in DB2DB2 中联合查询的重复数据删除
【发布时间】: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

【问题讨论】:

    标签: sql db2 db2-400


    【解决方案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
    • 谢谢我用了你的答案并想通了!
    猜你喜欢
    • 2018-03-04
    • 2012-09-06
    • 1970-01-01
    • 2014-12-23
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    • 2011-12-09
    • 2012-11-02
    相关资源
    最近更新 更多