微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.jb51.cc/mssql/75049.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐