我看到很多关于根据其他列或表更新列的问题,但是没有看到基于相同列但不同行更新的答案。
数据布局类似于:
我需要在关闭列中添加一个“Y”,表示下面的行在关闭列中的“Y”行。
因此,在这个例子中,序列400在闭合列中会得到一个“Y”,因为它下面的行有一个“Y”。
这仅适用于包含相同作业编号的行。
(背景)当人们忘记关闭序列并且导致系统中出现一堆假的开放序列时,会发生这种情况。我们一个接一个地繁琐地关闭它们,但SQL解决方案最好。
答案 0 :(得分:0)
这里有点猜测,因为没有提供很多信息。顺便说一句,你应该避免使用保留字作为列名。像Sequence这样的东西不是列名的好选择。
这样的事情应该很接近。
Update yt
set Closed = 'Y'
from YourTable yt
where yt.[Sequence] < (select max(Sequence) from YourTable yt2 where yt2.JobNumber = yt.JobNumber and Closed = 'Y')