根据同一列中的值更新行值

时间:2016-10-19 18:36:43

标签: sql-server

我看到很多关于根据其他列或表更新列的问题,但是没有看到基于相同列但不同行更新的答案。

数据布局类似于:

Data

我需要在关闭列中添加一个“Y”,表示下面的行在关闭列中的“Y”行。

因此,在这个例子中,序列400在闭合列中会得到一个“Y”,因为它下面的行有一个“Y”。

这仅适用于包含相同作业编号的行。

(背景)当人们忘记关闭序列并且导致系统中出现一堆假的开放序列时,会发生这种情况。我们一个接一个地繁琐地关闭它们,但SQL解决方案最好。

1 个答案:

答案 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')