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