删除SQL表的中间行

删除SQL表的中间行,sql,sql-server,Sql,Sql Server,在我的SQL表中存储状态记录 有4种主要状态:打开、新建、完成和关闭。 可能会有许多新的状态。 但“打开”、“完成”和“关闭”应仅为一种状态。 但我们可以关闭状态重新打开(ID 102) 对于特定的序列,SEQ列是唯一的ID。 我们可以把ID和SEQ看作是整个表唯一的键。< /P> 如果状态为关闭,则结束时间应为空。 但在体制问题上,我处于中间地位。 我想取消这个状态 你能帮我把这个拿走吗 Hmmm。您可以将序列与id的最大序列进行比较: select t.*, (case whe

在我的SQL表中存储状态记录

有4种主要状态:打开、新建、完成和关闭。 可能会有许多新的状态。 但“打开”、“完成”和“关闭”应仅为一种状态。 但我们可以关闭状态重新打开(ID 102)

对于特定的序列,SEQ列是唯一的ID。 我们可以把ID和SEQ看作是整个表唯一的键。< /P> 如果状态为关闭,则结束时间应为空。 但在体制问题上,我处于中间地位。 我想取消这个状态

你能帮我把这个拿走吗


Hmmm。您可以将序列与
id
的最大序列进行比较:

select t.*,
       (case when status = 'Closed' and seq <> max(seq) over (partition by id)
             then null else status
        end)             
from t;
选择t.*,
(状态为“已关闭”且序号最大(序号)超过(按id划分)时的情况)
然后为null else状态
(完)
从t;

如果您想实际更改值,可以很容易地将其合并到
更新
查询中。

从MyTable中删除,其中Status='Closed',End_Time不为null