有一张表:
生产订单号 工序号 完工日期
20150923 0010 2015-11-25
20150923 0020 2015-11-1
20150923 0030 2015-11-2
20150922 0010 2015-10-1
20150922 0020 2015-10-1
20150922 0030 2015-9-23
20150921 0010 2015-9-21
20150921 0020 2015-9-1
20150921 0030 2015-9-21
20150921 0040 2015-9-30
这张表本来的逻辑是:同一生产订单号,下道工序比上道工序完工日期晚。
但是人为调整后,出现了同一生产订单号,下道工序比上道工序完工日期早。
我想要比较同一生产订单号,0010跟0020比,0020跟0030比,依次类推,一直比较到最后一道工序,找出下道工序比上道工序完工日期早的。
------解决思路----------------------
declare @Data table (
D INT ,
G CHAR(4) ,
W DATE)
INSERT INTO @Data
SELECT 20150923 ,'0010', '2015-11-2' UNION ALL
SELECT 20150923 ,'0020', '2015-11-1' UNION ALL
SELECT 20150923 ,'0030', '2015-11-2' UNION ALL
SELECT 20150922 ,'0010', '2015-10-1' UNION ALL
SELECT 20150922 ,'0020', '2015-10-1' UNION ALL
SELECT 20150922 ,'0030', '2015-9-23' UNION ALL
SELECT 20150921 ,'0010', '2015-9-21' UNION ALL
SELECT 20150921 ,'0020', '2015-9-1 ' UNION ALL
SELECT 20150921 ,'0030', '2015-9-21' UNION ALL
SELECT 20150921 ,'0040', '2015-9-30'
;With T as (
select row_number() over (partition by D order by G ) as RowNO,* from @Data
)
SELECT * FROM T a left join T b on a.D = b.D and a.RowNO = b.RowNO - 1
where a.w > b.w