SQL函数,为重复的一组数字返回不同的值

时间:2013-09-12 23:48:55

标签: sql sql-server

我不确定是否还有这个函数,但是我们可以说你有一个像这样的列:

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。

1 个答案:

答案 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

Here's a SQL Fiddle