首页 > 解决方案 > 选择除最后一行以外的所有行

问题描述

我有一个选择查询,我有RowNumber()函数,所以我在结果中有一个分区的行号。

我想达到什么目标?我想更新每个分区的所有行号,除了每个分区的最后一行。所以假设我们有 RowNumber1,2,3,4和另一个分区,1,2我想做一个更新子句来更新除 number 4(第一个分区)之外的所有行号并排除2第二个分区的行号。

我知道我们可以使用 where 子句中的简单条件排除第一行号,RowNumber != 1但在这种情况下,我想要每个分区的最后一行号,并且该数字在所有分区中都不同。

我怎样才能做到这一点?问候

标签: sqlsql-server

解决方案


您可以使用可更新的 CTE,但反转order byin的方向row_number()

with toupdate as (
      < your query here but with DESC sort instead of ASC sort or vice versa >
     )
update toupdate
    set . . .
    where rownumber = 1;

推荐阅读