Попытка определить, что является следующей операцией машины для конкретных номеров деталей

Я работаю с таблицей, которая содержит номер детали, порядок работы и машинные операции. Цель состоит в том, чтобы определить, что является следующей операцией машины для каждого номера детали.

Я могу сделать это с этим примером.

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 как Nextmachop, когда он должен быть НЕДЕЙСТВИТЕЛЕН или не помещает туда ничего. Я не уверен, как закодировать это, чтобы достичь этого

1 ответ

Тебе нужно 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
Другие вопросы по тегам