表   A   表  B
tb A  中有  GPDM  ZWMC   SSD    NBBM
tb B  中有  NBBM    QSR (日期型)需要查询出   A表中 ZWMC  相同  而在 B 表中 QSR 不同的记录
如        A    有以下记录                 
   10000    05华能01    上     1
   20000    05华能01    下     2
   30000    02华能01    上     3
   40000    02华能01    下     4
 B   表中 有以下记录
   1               2011-01-01
   2               2011-01-01
   3               2010-01-01
   4               2010-01-02则  查出的结果  是 
30000   02华能01     2010-01-01
40000   02华能01      2010-01-02

解决方案 »

  1.   


    declare @tbA table (GPDM int,ZWMC varchar(8),SSD varchar(2),NBBM int)
    insert into @tbA
    select 10000,'05华能01','上',1 union all
    select 20000,'05华能01','下',2 union all
    select 30000,'02华能01','上',3 union all
    select 40000,'02华能01','下',4declare @tbB table (NBBM int,QSR datetime)
    insert into @tbB
    select 1,'2011-01-01' union all
    select 2,'2011-01-01' union all
    select 3,'2010-01-01' union all
    select 4,'2010-01-02'select GPDM=max(GPDM),ZWMC,QSR=
    convert(varchar(10),QSR,120) from @tbA a left join 
    @tbB b on a.NBBM=b.NBBM group by ZWMC,QSR
    having(count(*)=1)
    /*
    GPDM        ZWMC     QSR
    ----------- -------- ----------
    30000       02华能01   2010-01-01
    40000       02华能01   2010-01-02
    */
      

  2.   

    select gpdm,zwmc,qsr from a left join b on a.nbbm=b.nbbm where zwmc='02华能01'
      

  3.   

    不好意思 我用你的代码来查的话  就把 ZWMC 不同 但是QSR 相同的也会查出来 。
      

  4.   

    老大   里面有好多数据的。ZWMC 相同的  是 未知的。 不同只提出来一条我知道的呀
      

  5.   

    不好意思 我用你的代码来查的话 就把 ZWMC 不同 但是QSR 相同的也会查出来 。
      

  6.   

    需要查询出 A表中 ZWMC 相同 而在 B 表中 QSR 不同的记录
    就是说如果A表中只有一条的话,不出现重复的,就不取出来?
      

  7.   


    declare @tbA table (GPDM int,ZWMC varchar(8),SSD varchar(2),NBBM int)
    insert into @tbA
    select 10000,'05华能01','上',1 union all
    select 20000,'05华能01','下',2 union all
    select 30000,'02华能01','上',3 union all
    select 40000,'02华能01','下',4 union all
    select 50000,'07华能01','上',5 union all
    select 60000,'08华能01','下',6 declare @tbB table (NBBM int,QSR datetime)
    insert into @tbB
    select 1,'2011-01-01' union all
    select 2,'2011-01-01' union all
    select 3,'2010-01-01' union all
    select 4,'2010-01-02' union all
    select 5,'2010-12-31' union all
    select 6,'2010-12-31'select GPDM=max(GPDM),a.ZWMC,QSR=convert(varchar(10),c.QSR,120)
    from @tbA a left join (
    select ZWMC from @tbA group by ZWMC having(count(1)>1)
    ) b on a.ZWMC=b.ZWMC
    left join @tbB c on a.NBBM=c.NBBM
    where b.ZWMC is not null
    group by a.ZWMC,c.QSR having(count(*)=1)/*
    GPDM        ZWMC     QSR
    ----------- -------- ----------
    30000       02华能01   2010-01-01
    40000       02华能01   2010-01-02
    */