基于查询返回的行数的行编号

时间:2013-11-25 06:17:43

标签: sql sql-server group-by row-number

我有要求,我必须根据返回的行总数为我的查询返回的每条记录提供rownumber。 让我们说每3条记录的rownumber。 对于前。

colA    colB colC(rowno)
1       abc  1
2       asd  1
3       asw  1
4       tre  2
5       cfr  2
6       dfr  2
7       sdf  3

我尝试使用row_number()(按照colA的count(*)顺序分区)但是它为所有记录提供了行号。

任何想法都会有所帮助。

2 个答案:

答案 0 :(得分:2)

使用一些数学和整数除法规则:

select colA,colB,(ROW_NUMBER() OVER (ORDER BY colA)+2)/3 as colC
from table

两个整数常量是相关的 - 你总是希望内部常量(2)比应该赋予相同数字(3)的行数少一个。

答案 1 :(得分:0)

试试这个

SELECT ROW_NUMBER() OVER (Order by [Col]) as ColID FROM [TABLE NAME]
WHERE colC = 3