Ich habe ein CTE
, die wie folgt aussieht:Update alle außer den letzten zwei?
;with cte as
(
SELECT WeekNum
FROM MonitorTable
GROUP BY WeekNum
HAVING SUM(CASE WHEN IsProcessed = 1 THEN 1
ELSE 0
END) = 8
order by WeekNum
)
update MonitorTable
set ReadToGrid = 0
where WeekNum in (select WeekNum from cte)
Das hier Problem ist, dass es alles ist zu aktualisieren. Da immer zwei übrig bleiben müssen, kann ich nur den letzten updaten.
Also lassen Sie uns sagen, dass CTE gibt die folgende:
1
2
3
4
5
6
ich nicht alles aktualisieren; müsste alles außer den letzten zwei (1, 2, 3, 4) aktualisieren.
Also, wie kann ich das Skript so ändern, dass es alles außer den letzten zwei Zeilen aktualisiert?
Danke.
Änderung der 'where' Zustand' wo WEEKNUM in (wählen WEEKNUM-2 von CTE) '? –
Vielleicht 'WHERE WeekNum <= (SELECT MAX (WocheNum) -2 FROM cte)' – BJones