创建查询从两个表中有类似的数据相结合的数据

问题描述 投票:0回答:2

在需要两个类似的表中没有得到重复聚集的结果。

该表有类似的结构。 (日期,billed_number,CARRIER_ID,持续时间...)表是2019年1月29日和2019年1月30日

我试过UNION相同的查询,但我得到重复的条目。

 select billed_number, sum(CASE WHEN [account_billed_duration] > 0 THEN 1 END) AS completed
 from alex4..[2019-01-29]
 where billed_number = '702640'
 and carrier_id = 171
 group by billed_number

 union all

 select billed_number, sum(CASE WHEN [account_billed_duration] > 0 THEN 1 END) AS completed
 from alex4..[2019-01-30]
 where billed_number = '702640'
 and carrier_id = 171
 group by billed_number

在这个例子中,我只用表([2019年1月29日]和[2019年1月30日]),我还需要能够两个以上的表结合起来。

结果:billed_number,完成702640 3735 702640 3539

预期结果:billed_number,完成702640 7274

sql-server-2012
2个回答
0
投票

使用union不UNION ALL确实有重复结合所有结果


0
投票

感谢您的答复。其实我都尝试UNION和UNION ALL,得到了相同的结果。

我昨晚直到我想通了。一个子查询的伎俩......

 SELECT  distinct  billed_number , sum(completed)as comp , FROM    (
        SELECT  [billed_number], 
        sum(CASE WHEN [account_billed_duration] > 0 THEN 1 END) AS completed,
        sum(CASE WHEN [account_billed_duration] = 0 THEN 1 END) AS failed
        FROM alex4..[2019-01-29]
 where billed_number = '702640'
 and carrier_id = 171
 group by billed_number --,account_billed_duration
        UNION
        SELECT  [billed_number], 
        sum(CASE WHEN [account_billed_duration] > 0 THEN 1 END) AS completed,
        sum(CASE WHEN [account_billed_duration] = 0 THEN 1 END) AS failed
        FROM    alex4..[2019-01-30]
 where billed_number = '702640'
 and carrier_id = 171
 group by billed_number --, account_billed_duration
    ) Q
    group by billed_number

再次感谢您的答复:-)

© www.soinside.com 2019 - 2024. All rights reserved.