表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
谢谢

解决方案 »

  1.   

    select A.pactno,A.,A.pdtnumber,A.edition,A.1-isnull(B.2)
    from t1 A left join t2 B 
    on A.pactno=B.pactno and A.pdtnumber=B.pdtnumber and A.edition=B.edition
      

  2.   

    --修正
    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
      

  3.   

    select t1.pactno , t1.pdtnumber t1.edition ,  t1.1 from t1 where t1.pactno not in(select pactno from t2) and t1.pdtnumber not in(select pdtnumber from t2) and t1.edition not in(select edition from t2)
    自己试试,我没有具体测试。有兴趣的加我的QQ群32097372。大家一起学习交流哦
      

  4.   

    select pactno,pdtnumber,edition,1
    from t1
    where pactno not in
    (select pactno 
    from t2)
      

  5.   

    if object_id('pubs..t1') is not null
       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 行)
    */