表t1.申请出口的产品
合同编号,产品编号,产品版本,产品数量
pactno pdtnumber edition 1
k2007 p1 v1 5000
b2007 p1 v2 3000
c2007 p2 v1 8000
表t2 .已经出口的产品
pactno pdtnumber edition 2
k2007 p1 v1 2500
b2007 p1 v2 500
注:合同编号,产品编号,产品版本,组成唯一的一行数据
求:剩下还没出口的产品
pactno pdtnumber edition 1
k2007 p1 v1 2500
b2007 p1 v2 2500
c2007 p2 v1 8000
谢谢
合同编号,产品编号,产品版本,产品数量
pactno pdtnumber edition 1
k2007 p1 v1 5000
b2007 p1 v2 3000
c2007 p2 v1 8000
表t2 .已经出口的产品
pactno pdtnumber edition 2
k2007 p1 v1 2500
b2007 p1 v2 500
注:合同编号,产品编号,产品版本,组成唯一的一行数据
求:剩下还没出口的产品
pactno pdtnumber edition 1
k2007 p1 v1 2500
b2007 p1 v2 2500
c2007 p2 v1 8000
谢谢
from t1 A left join t2 B
on A.pactno=B.pactno and A.pdtnumber=B.pdtnumber and A.edition=B.edition
select A.pactno,A.pdtnumber,A.edition,A.1-isnull(B.2,0)
from t1 A left join t2 B
on A.pactno=B.pactno and A.pdtnumber=B.pdtnumber and A.edition=B.edition
--或者
select pactno,pdtnumber,edition,sum(1) from
(select * from t1 union all select pactno,pdtnumber,edition,-2 from t2)A
group by pactno,pdtnumber,edition
自己试试,我没有具体测试。有兴趣的加我的QQ群32097372。大家一起学习交流哦
from t1
where pactno not in
(select pactno
from t2)
drop table t1
gocreate table t1(合同编号 varchar(10),产品编号 varchar(10),产品版本 varchar(10),产品数量 int)
insert into t1(合同编号,产品编号,产品版本,产品数量) values('k2007','p1','v1',5000)
insert into t1(合同编号,产品编号,产品版本,产品数量) values('b2007','p1','v2',3000)
insert into t1(合同编号,产品编号,产品版本,产品数量) values('c2007','p2','v1',8000)
goif object_id('pubs..t2') is not null
drop table t2
gocreate table t2(合同编号 varchar(10),产品编号 varchar(10),产品版本 varchar(10),产品数量 int)
insert into t2(合同编号,产品编号,产品版本,产品数量) values('k2007','p1','v1',2500)
insert into t2(合同编号,产品编号,产品版本,产品数量) values('b2007','p1','v2',500)
goselect t1.合同编号,t1.产品编号,t1.产品版本,t1.产品数量 - isnull(t2.产品数量,0) 产品数量 from t1
left join t2
on t1.合同编号 = t2.合同编号 and t1.产品编号 = t2.产品编号 and t1.产品版本 = t2.产品版本drop table t1,t2/*
合同编号 产品编号 产品版本 产品数量
---------- ---------- ---------- -----------
k2007 p1 v1 2500
b2007 p1 v2 2500
c2007 p2 v1 8000(所影响的行数为 3 行)
*/