对于不匹配的数据,将分钟值更新为0,同时保留一个数据

时间:2017-04-14 14:28:37

标签: sql sql-server sql-server-2008 sql-server-2005

enter image description here

需要根据特定列无法匹配更新某些数据&保持一个数据

还需要注意性能,因为这是针对大量数据的

1 个答案:

答案 0 :(得分:1)

您可以使用row_number()。以你的例子:

with toupdate as (
      select t.*,
            row_number() over (partition by therapyadmissionid, units, totalminutes order by documentstartdate) as seqnum
      from t
     )
update toupdate
    set units = 0,
        totalminutes = 0
    where seqnum > 1;

我应该注意到这样做的必要性表明你的数据模型存在缺陷。 unitstotalminutes应该存储在另一个表中。