22,210
社区成员
发帖
与我相关
我的任务
分享
DECLARE @a TABLE(code VARCHAR(10),location VARCHAR(10),wmsloc VARCHAR(10))
DECLARE @b TABLE(code VARCHAR(10),location VARCHAR(10),wmsloc VARCHAR(10))
INSERT INTO @a(code,location,wmsloc)
select 'L001','sh','09' union all
select 'L002','sh','09' union all
select 'L003','sh','09' union all
select 'L004','sh','09'
INSERT INTO @b(code,location,wmsloc)
select 'L001','sh','09' union all
select 'L002','sh','09' union all
select 'L003','sh','09' union all
select 'L005','sh','09'
SELECT t.*,
CASE WHEN a.code = t.code THEN 1 ELSE 0 END AS aqty,
CASE WHEN b.code = T.code THEN 1 ELSE 0 END AS bqty,
CASE WHEN a.code = t.code AND b.code = t.code THEN 0 ELSE 1 END AS sumqty
FROM (SELECT * FROM @a AS a UNION SELECT * FROM @b AS b ) AS t
LEFT JOIN @a AS a ON t.code = a.code
LEFT JOIN @b AS b ON t.code = b.code
/*
code location wmsloc aqty bqty sumqty
---------- ---------- ---------- ----------- ----------- -----------
L001 sh 09 1 1 0
L002 sh 09 1 1 0
L003 sh 09 1 1 0
L004 sh 09 1 0 1
L005 sh 09 0 1 1
*/
---测试数据---
if object_id('[A]') is not null drop table [A]
go
create table [A]([CODE] varchar(4),[location] varchar(2),[wmsloc] varchar(2))
insert [A]
select 'L001','sh','09' union all
select 'L002','sh','09' union all
select 'L003','sh','09' union all
select 'L004','sh','09'
GO
if object_id('[B]') is not null drop table [B]
go
create table [B]([CODE] varchar(4),[location] varchar(2),[wmsloc] varchar(2))
insert [B]
select 'L001','sh','09' union all
select 'L002','sh','09' union all
select 'L003','sh','09' union all
select 'L005','sh','09'
GO
---查询---
select
isnull(a.code,b.code) as code,
isnull(a.location,b.location) as location,
isnull(a.wmsloc,b.wmsloc) as wmsloc,
case when a.code is not null then 1 else 0 end as aqty,
case when b.code is not null then 1 else 0 end as bqty,
case when a.code is not null and b.code is not null then 0 else 1 end as sumqty
from a
full join b
on a.code=b.code and a.location=b.location and a.wmsloc=b.wmsloc
---结果---
code location wmsloc aqty bqty sumqty
---- -------- ------ ----------- ----------- -----------
L001 sh 09 1 1 0
L002 sh 09 1 1 0
L003 sh 09 1 1 0
L004 sh 09 1 0 1
L005 sh 09 0 1 1
(5 行受影响)