sql – 如何在select查询中递增

前端之家收集整理的这篇文章主要介绍了sql – 如何在select查询中递增前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个查询我正在工作,我想增加一个字段,并重新启动计数器,当一个键值不同.

我知道这段代码不行.以编程方式,这就是我想要的

declare @counter int,@id
set @counter = 0
set @id = 0

select distinct 
  id,counter = when id = @id 
              then @counter += 1
            else @id = id  
               @counter = 1

…最终结果看起来像这样:

ID    Counter
3     1
3     2 
3     3
3     4
6     1
6     2
6     3
7     1

是的,我被困在sql2k上.否则row_number()将工作.

解决方法

假设一张桌子:
CREATE TABLE [SoMetable] (
  [id] INTEGER,[order] INTEGER,PRIMARY KEY ([id],[order])
);

在Microsoft sql Server 2000中获得此项的一种方法是使用子查询来对具有相同ID和较低排序的行进行计数.

SELECT *,(SELECT COUNT(*) FROM [SoMetable] counter 
           WHERE t.id = counter.id AND t.order < counter.order) AS row_num
FROM [SoMetable] t

提示:2010年不久,您的sql Server将足够老,可以开车.

如果您使用sql Server 2005或更高版本,您将获得诸如ROW_NUMBER()OVER(PARTITION …)等精彩的新功能.

原文链接:https://www.f2er.com/mssql/75049.html

猜你在找的MsSQL相关文章