【发布时间】:2015-04-20 12:31:59
【问题描述】:
我在 Microsoft SQL Server 2008 R2 上有一个名为 DATA 的表,其中包含三个不可为空的整数字段:ID、Sequence 和 Value。具有相同 ID 的序列值将是连续的,但可以以任何值开头。我需要一个查询,它会返回具有相同 ID 和值的连续行的计数。
例如,假设我有以下数据:
ID Sequence Value
-- -------- -----
1 1 1
5 1 100
5 2 200
5 3 200
5 4 100
10 10 10
我想要以下结果:
ID Start Value Count
-- ----- ----- -----
1 1 1 1
5 1 100 1
5 2 200 2
5 4 100 1
10 10 10 1
我试过了
SELECT ID, MIN([Sequence]) AS Start, Value, COUNT(*) AS [Count]
FROM DATA
GROUP BY ID, Value
ORDER BY ID, Start
但这给了
ID Start Value Count
-- ----- ----- -----
1 1 1 1
5 1 100 2
5 2 200 2
10 10 10 1
它将所有具有相同值的行分组,而不仅仅是连续的行。
有什么想法吗?从我所见,我相信我必须使用 ROW_NUMBER() 在连续的行上将表与自身连接起来,但我不确定如何从中获取计数。
提前致谢。
【问题讨论】:
标签: sql sql-server sql-server-2008-r2