Попытка определить, что является следующей операцией машины для конкретных номеров деталей
Я работаю с таблицей, которая содержит номер детали, порядок работы и машинные операции. Цель состоит в том, чтобы определить, что является следующей операцией машины для каждого номера детали.
Я могу сделать это с этим примером.
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