SQL查询计数器列

时间:2013-03-24 21:31:00

标签: sql sql-server

我有一个表,我需要查询以生成这样的结果集:

ColA   ColB   ColC
====   ====   ====
AA     BC     1
AA     BD     2
BB     DD     1
BB     EE     2
BB     FF     3
CC     AA     1

(这个'虚构'样本的行数多于

表中只存在ColA + ColB,ColC需要由查询生成,每个不同的'ColA'需要在ColC中将计数重置为1,然后向上计数直到ColA中的下一个值。

我正在使用MS / SQL2008。

谢谢 - 我试图搜索其他人是否提出过类似的问题,并且看过哪些问题可以使用:  

row_number() over (order by ColA, ColB)

但据我所知,根据这个例子,这只会给我一个1 ... 6的序列表?

2 个答案:

答案 0 :(得分:0)

您需要对行编号进行分区 - 每个分区都有自己的1,2,3,......行编号。

row_number() over (partition by ColA order by ColB)

答案 1 :(得分:0)

SELECT
    ColA,
    ColB,
    row_number() over (partition by ColA order by ColB) as ColC
FROM
    Test

DEMO

您可以添加ORDER BY ColA,以强制执行您想要的订单(但演示显示没有必要)。