有两个表,分别是a,b,数据如下
a
id tm sp kc cy danh
1 02 2 null null aa
2 01 3 null null aa
3 03 2 null null aa
4 05 4 null null bb
5 10 3 null null cc
b
id tm sp kc cy danh
1 02 null 1 null aa
2 01 null 2 null aa
3 10 null 3 null dd
我要的结果是
tm sp kc cy danh
02 2 1 1 aa
01 3 2 1 aa
03 2 0 2 aa
cy=sp-kc,tm是主键,tm、danh是唯一的。
现在选的danh是aa
其实就是,如果表a和表b中,条码一样的就合并成一条,a有b没有或b有a没有的也显示,但是null要变成0,
sql
------解决方案--------------------
select 字段 from a with(nolock)
union
select 字段 from b with(nolock)
Null——>0
case when 字段 is null then 0 end
------解决方案--------------------
-->生成表a
if object_id('a') is not null
drop table a
Go
Create table a([id] smallint,[tm] nvarchar(2),[sp] smallint,[kc] nvarchar(50),[cy] nvarchar(50),[danh] nvarchar(2))
Insert into a
Select 1,N'02',2,null,null,N'aa'
Union all Select 2,N'01',3,null,null,N'aa'
Union all Select 3,N'03',2,null,null,N'aa'
Union all Select 4,N'05',4,null,null,N'bb'
Union all Select 5,N'10',3,null,null,N'cc'
-->生成表b
if object_id('b') is not null
drop table b
Go
Create table b([id] smallint,[tm] nvarchar(2),[sp] nvarchar(50),[kc] smallint,[cy] nvarchar(50),[danh] nvarchar(2))
Insert into b
Select 1,N'02',null,1,null,N'aa'
Union all Select 2,N'01',null,2,null,N'aa'
Union all Select 3,N'10',null,3,null,N'dd'