我正在处理以下数据:
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
请告诉我!
答案 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