有一表模式如下:
铸件号 造型码 组合型板号 生效期 失效期
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
请高手指点
铸件号 造型码 组合型板号 生效期 失效期
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
请高手指点
from tb t
where no exists(select 1 from tb where 铸件号=t.铸件号 and 造型码=t.造型码 and t.生效期>生效期)
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.生效期)
left join #tb b
on a.铸件号=b.铸件号 and a.造型码=b.造型码 and a.生效期>b.生效期
where b.生效期 is null