用完全连接做总结?

时间:2014-08-08 18:08:46

标签: sql sql-server sql-server-2008

我正在处理以下数据:

create table #CompanyA (
ID varchar(50), 
tran_count int
)

insert into #CompanyA
values 
('A', 1),
('B',4)


create table #CompanyB (
ID varchar(50),
tran_count int
)

insert into #CompanyB
values ('A',5),
       ('C',3)

并且我尝试编写一个按ID列连接两个表的select,这将按ID添加相应的tran_counts。我尝试使用完全加入,但我不知道如何考虑NULL值:

    Select A.ID, B.ID, A.tran_count, B.tran_count, A.tran_count + B.tran_count as total
    from #CompanyA A full join #CompanyB B
    on A.ID = B.ID

      ID    ID    tran_count    tran_count  total
       A    A     1             5           6
       B    NULL  4             NULL        NULL
       NULL C     NULL          3           NULL

我想要的输出是:

 ID sumtotal
 A  6
 B  4
 C  3

请告诉我!

3 个答案:

答案 0 :(得分:0)

您可以使用DECODE功能。 试试这个:

DECODE(field,NULL,0, field)

答案 1 :(得分:0)

您可以使用isNull()选择任何替换所有空值。

在您的示例中,查询将如下所示。

Select A.id as ID, isnull(A.tran_count,0) + isnull(B.tran_count,0) as sumtotal
    from #CompanyA A full join #CompanyB B
    on A.ID = B.ID

答案 2 :(得分:0)

为什么不“联合所有”两个表并总结tran_count?从您提供的示例中可以使用

select id, sum(tran_count) as sumtotal
from
(
select id,tran_count
from #CompanyA
union all
select id,tran_count
from #CompanyB
) a
group by id