select iName from 表1 where iName in
(select a.iname from 表2 a,表2 b
where a.iname=b.iname and abs(a.iNum-b.iNum)>100 and
      b.iDate=(select max(iDate) from 表2 where iDate<a.iDate))

解决方案 »

  1.   

    下面语句可以基本满足你的要求,但没有考虑
      1、最新的月份为当前月份
      2、存在某一类只有1个月数据的情况select iName from a where 
    abs((select Sum(iNum) From 
                    (Select Top 2 iNum From b Where iName=a.iName Order by iDate Desc) as t)
                 -2*(select Top 1 iNum From b Where iName=a.iName Order by iDate Desc) 
                )>100
      

  2.   

    --不知道有没有理解错.select * from 表2 a
    where exists( --要求在表1中存在
    select 1 from 表1 where iName=a.iName
    )
    and exists( --要求与一上月份之差大于100(月份可以不连续)
    select 1 from 表2 
    where iName=a.iName and iDate<a.iDate 
    and a.iNum-iNum>100)
    and iDate=(--要求是当前月份的(最大的一个月)
    select max(iDate) from 表2 where iName=a.iName
    )
      

  3.   

    select iName from 表1 where iName in
    (select a.iname from 表2 a,表2 b
    where a.iname=b.iname and a.iNum-b.iNum>100 and
          iDate=(select max(iDate) from 表2 where iDate<a.iDate where a.iname=b.iname))
      

  4.   

    select iName from 表1 x
    where exists (
    (select 1 from 表2 a,表2 b
    where a.iname=b.iname and a.iname=x.iname
    and a.idate='200406'  
    and b.iDate=(select max(iDate) from 表2 where iDate<a.iDate)
    and a.iNum-b.iNum>100
    )
      

  5.   

    select iName from 表1 x
    where exists (
    (select 1 from 表2 a,表2 b
    where a.iname=b.iname and a.iname=x.iname
    and a.idate='200406'  
    and b.iDate=(select max(iDate) from 表2 where iDate<a.iDate and iname=a.iname)
    and a.iNum-b.iNum>100
    )