SQL增量和重置变量插入

时间:2011-06-20 13:29:26

标签: sql sql-server-2005 stored-procedures count

我可能错过了一些简单的问题。然而它像我一样忽略任何细节。但我一直在寻找一段时间,并没有遇到任何类似于我的问题。

设定: SQL 2005,存储过程。

我有一个经常通过呼叫尝试更新的表。使用UNIQUEIDENTIFIER将所有记录绑在一起,即

xxx-xxx-xxx-xxx-xxxx | 20/06/2011 12:00 | 10

我希望有一个存储过程来抓取所有记录,并通过UNIQUEIDENTIFIER对它们进行排序,同时为这些尝试生成一个计数器。即。

1111-1111-1111-1111    | 20/06/2011 12:05    |  10 | 0    
1111-1111-1111-1111    | 20/06/2011 12:06    |  30 | 1   
2222-2222-2222-2222    | 20/06/2011 12:10    | 120 | 0  
3333-3333-3333-3333    | 20/06/2011 12:20    |  50 | 0

从上面可以很容易地识别呼叫尝试并添加号码。但是,我可能非常愚蠢。

感谢任何帮助。

此致 克里斯

2 个答案:

答案 0 :(得分:3)

您可以使用ROW_NUMBER

e.g。

SELECT ID, DateField, FieldA, 
    ROW_NUMBER() OVER(PARTITION BY ID ORDER BY DateField ASC) AS Counter
FROM YourTable
ORDER BY ID, DateField

PARTITION BY基本上重置每个不同ID的计数器,以下ORDER BY确保计数器按日期字段按递增顺序分配。请注意,这将是每次从1开始的计数器。如果你想让它从0开始,你可以在SELECT

中减去1

答案 1 :(得分:0)

您是否可以在SQL中使用“group by”子句(带计数)

您可以使用“order by”来执行排序(尽管SQL不会立即显示SQL如何实现或使用它)

此外,问题标题似乎与您提出的问题不符。