0

我有一个表,我需要查询以生成如下结果集:

ColA ColB ColC
==== ==== ====
AA 公元前 1
AA BD 2
BB DD 1
BB EE 2
BB FF 3
抄送 AA 1

(有比这个“虚构”样本更多的行)

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

我正在使用 MS/SQL2008。

谢谢-我试图搜索以查看其他人是否提出过类似的问题,并且看到了使用以下内容的查询:

row_number() over(按 ColA、ColB 排序)

但据我了解,按照这个例子,这只会给我一个从 1..6 开始的排序列表?

4

2 回答 2

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

演示

您可以添加ORDER BY ColA, 以强制您想要实现的顺序(但演示表明它不是必需的)。

于 2013-03-24T21:37:17.067 回答
0

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

row_number() over (partition by ColA order by ColB)
于 2013-03-24T21:35:05.970 回答