2

我不确定是否有这个功能,但可以说你有一个类似的列:

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。

4

1 回答 1

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

这是一个 SQL Fiddle

于 2013-09-13T00:03:00.953 回答