有一表模式如下:
  铸件号     造型码    组合型板号    生效期      失效期
2402F-117    BB202                  1999-05-01   2001-05-1
2402F-117    BB203                  2003-01-01   2005-06-1
2402F-117    BB306        A9        2004-07-01   2006-04-1
2402F-117    BB306        B7        2005-02-01   2006-05-1
2402F-117    BB407                  2009-12-22   2012-07-1
………………
31B-04015    BB202                  1999-09-01   2001-10-1
31B-04015    BB203                  2003-11-01   2005-12-1
31B-04015    BB306                  2004-12-01   2006-12-1
31B-04015    BB407                  2009-10-22   2012-10-1
情况如下: 因为一个铸件号有时在同一个造型码会出现组合型板,大部分铸件号单单在一个造型码上不会有组合型板
现在我的要求如下: 就是在同一个铸件号,造型码只出现不重复的例如:
  铸件号     造型码        生效期      失效期
2402F-117    BB202        1999-05-01   2001-05-1
2402F-117    BB203        2003-01-01   2005-06-1
2402F-117    BB306        2005-02-01   2006-05-1(可以取有组合型板号的任何一条)
2402F-117    BB407        2009-12-22   2012-07-1
………………
31B-04015    BB202        1999-09-01   2001-10-1
31B-04015    BB203        2003-11-01   2005-12-1
31B-04015    BB306        2004-12-01   2006-12-1
31B-04015    BB407        2009-10-22   2012-10-1
请高手指点

解决方案 »

  1.   

    select 铸件号, 造型码 , 生效期, 失效期
    from tb t 
    where no exists(select 1 from tb where 铸件号=t.铸件号 and 造型码=t.造型码 and t.生效期>生效期)
      

  2.   


    select 铸件号, 造型码 , 生效期, 失效期
    from tb t  
    where (ltrim(组合型板号)='' or 组合型板号 is null )
    union all
    select 铸件号, 造型码 , 生效期, 失效期
    from tb t1
    where 组合型板号 is not null and not exists( select 1 from tb w where w.铸件号=t1.铸件号 and w.造型码=t1.造型码 and w.生效期>t1.生效期)
      

  3.   

    select a.* from #tb a
    left join #tb b
    on a.铸件号=b.铸件号 and a.造型码=b.造型码 and a.生效期>b.生效期
    where b.生效期 is null