我有一个查询我正在工作,我想增加一个字段,并重新启动计数器,当一个键值不同.
我知道这段代码不行.以编程方式,这就是我想要的
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 举报,一经查实,本站将立刻删除。