困扰了一天的SQL语句,请各位高手指点,谢谢!
表结构及部分内容如下:
物料编码 更新记录号 更新时间 属性1 属性2 属性3
000001 0 20070908 p11 p22 p3
000001 1 20070910 p1 p2 p3
000001 2 20070915 p1 p2 p3
000001 3 20070918 p11 p2 p31
000001 4 20070918 p11 p2 p31
000001 5 20070920 p1 p2 p3
000001 6 20070920 p1 p2 p3
000001 7 20070921 p1 p2 p3
000001 8 20070922 p1 p2 p3
000001 9 20070925 p1 p22 p3
……
要求,对于连续的几条更改记录,如果(属性1+属性2+属性3)没有变化,则保留更新记录号最大的那条记录。同时更新记录号为0的是当前有效记录,须保留。
对于上面的记录,最终的查询结果应该是:
物料编码 更新记录号 更新时间 属性1 属性2 属性3
000001 0 20070908 p11 p22 p3
000001 2 20070915 p1 p2 p3
000001 4 20070918 p11 p2 p31
000001 8 20070922 p1 p2 p3
000001 9 20070925 p1 p22 p3
请各位高手指教,谢谢!
------解决方案----------------------看看是不是你要的
create table T(num varchar(10), flag int,[date] datetime, value1 varchar(10), value2 varchar(10), value3 varchar(10))
insert into T
select '000001 ', 0, '20070908 ' , 'p11 ', 'p22 ' , 'p3 ' union all
select '000001 ' , 1, '20070910 ', 'p1 ' , 'p2 ' , 'p3 ' union all
select '000001 ' , 2, '20070915 ' , 'p1 ' , 'p2 ' , 'p3 ' union all
select '0