2

我正在使用包含零件号、操作顺序和机器操作的表格。目标是确定每个零件号的下一个机器操作是什么。

我可以用这个例子做到这一点。

SELECT MyTable.PARTNO ,
MyTable.PCOPT  -- Machine Op order of operation,
MyTable.MACHOP,
lead(MyTable.MACHOP) OVER (ORDER BY MyTable.PARTNO, ABS(MyTable.PCOPT))   
as      Nextmachop   
FROM    MyTable

--Results 
PARTNO    PCOPT MACHOP  Nextmachop
0123456     10  IST     70A
0123456     20  70A     INF
0123456     30  INF     60 
0123456     40  60      10C
0140244H    10  10C     30A
0140244H    20  30A     INF
0140244H    800 INF     60 
0140244H    810 60      DOC

我的问题是,当涉及到下一个不同的 PARTNO 时,它会将该 MACHOP 作为 Nextmahop,而它应该为 NULL 或不放任何东西。我不知道如何编写代码来实现这一点

4

1 回答 1

2

你需要partition by

SELECT t.PARTNO ,
       t.PCOPT  -- Machine Op order of operation,
       t.MACHOP,
       lead(t.MACHOP) OVER (PARTITION BY t.PARTNO ORDER BY ABS(MyTable.PCOPT)) as Nextmachop   
FROM MyTable t
于 2016-09-28T16:33:23.737 回答