LAG(step_id) OVER (ORDER BY id DESC) AS prev_step_id,
update_by
<!-- WITH OrderedData AS (-->
<!-- SELECT site, bu, node_id, id, is_remark, step_id,-->
<!-- ROW_NUMBER() OVER (ORDER BY id DESC) AS rn,-->
<!-- LAG(step_id) OVER (ORDER BY id DESC) AS prev_step_id,-->
<!-- update_by-->
<!-- FROM plm_process_form-->
<!-- WHERE site = #{site} AND document_no = #{documentNo} and ISNULL(process_intervention_flag ,' ') <![CDATA[<>]]> 'Y'-->
<!-- ),-->
<!-- Filtered AS (-->
<!-- SELECT *-->
<!-- FROM OrderedData-->
<!-- WHERE step_id != prev_step_id OR prev_step_id IS NULL-->
<!-- )-->
<!-- SELECT site, bu, node_id, id, is_remark, step_id, update_by-->
<!-- FROM Filtered-->
<!-- ORDER BY rn OFFSET 1 ROW FETCH NEXT 1 ROW ONLY-->
<!-- 2026-06-08 同一个流程有多个路线 导致不能按照顺序取stepId优化 -->
;WITH OrderedData AS
(
SELECT
site,
bu,
node_id,
id,
is_remark,
step_id,
update_by,
update_date,
ROW_NUMBER() OVER(ORDER BY id DESC) rn
FROM plm_process_form
WHERE site = #{site} AND document_no = #{documentNo} and ISNULL(process_intervention_flag ,' ') <![CDATA[<>]]> 'Y'
WHERE site = #{site} AND document_no = #{documentNo} AND ISNULL(process_intervention_flag,' ') <![CDATA[<>]]> 'Y'
),
Filtered AS (
SELECT *
FROM OrderedData
WHERE step_id != prev_step_id OR prev_step_id IS NULL
PrevNodeInfo AS
(
SELECT od.node_id
FROM OrderedData od
JOIN OrderedData cur ON od.rn = cur.rn + 1
WHERE cur.is_remark = 0
)
SELECT site, bu, node_id, id, is_remark, step_id, update_by
FROM Filtered
ORDER BY rn OFFSET 1 ROW FETCH NEXT 1 ROW ONLY
<!-- select-->
<!-- site,-->
<!-- bu,-->
<!-- node_id,-->
<!-- id,-->
<!-- is_remark-->
<!-- from plm_process_form-->
<!-- where site = #{site} and bu = #{bu} and document_no = #{documentNo} and step_id = #{stepId} and ISNULL(process_intervention_flag ,' ') <![CDATA[<>]]> 'Y'-->
SELECT TOP 1 site, bu, pni.node_id, id, is_remark, step_id, update_by