我不确定是否还有这个函数,但是我们可以说你有一个像这样的列:
20
20
55
55
55
60
72
72
是否有可以提供的SQL查询:
20 0
20 1
55 0
55 0
55 1
60 1
72 0
72 1
基本上,创建一个新列,使所有值为0,除了它使最后一个值为1。
所以我现在所拥有的是:
ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} INT NOT NULL
CONSTRAINT zero DEFAULT 0
然后我需要一个选择所有最后一个值的函数,然后我可以使用更新表函数来更改所有这些值的tablename = 1。 如果它有所作为,我正在使用SQL Server 2008。
答案 0 :(得分:4)
您可以使用row_number()
。我假设你有一些其他专栏来定义订单。
select number, case when rn=1 then 1 else 0 end
from (
select id, number, row_number() over (partition by number order by id desc) rn
from Test
) x
order by id, rn