加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 如何在select查询中递增

发布时间:2020-12-12 08:52:16 所属栏目:MsSql教程 来源:网络整理
导读:我有一个查询我正在工作,我想增加一个字段,并重新启动计数器,当一个键值不同. 我知道这段代码不行.以编程方式,这就是我想要的 declare @counter int,@idset @counter = 0set @id = 0select distinct id,counter = when id = @id then @counter += 1 else @id
我有一个查询我正在工作,我想增加一个字段,并重新启动计数器,当一个键值不同.

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

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 …)等精彩的新功能.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读