Tôi có một bảng được gọi là DATA trên Microsoft SQL Server 2008 R2 với ba trường số nguyên không nullable: ID, Trình tự và Giá trị. Giá trị chuỗi với cùng một ID sẽ liên tiếp, nhưng có thể bắt đầu với bất kỳ giá trị nào. Tôi cần truy vấn sẽ trả về một số hàng liên tiếp có cùng ID và Giá trị.SQL Server GROUP BY COUNT Hàng liên tiếp Chỉ
Ví dụ, giả sử tôi có các dữ liệu sau:
ID Sequence Value
-- -------- -----
1 1 1
5 1 100
5 2 200
5 3 200
5 4 100
10 10 10
Tôi muốn các kết quả sau:
ID Start Value Count
-- ----- ----- -----
1 1 1 1
5 1 100 1
5 2 200 2
5 4 100 1
10 10 10 1
tôi đã cố gắng
SELECT ID, MIN([Sequence]) AS Start, Value, COUNT(*) AS [Count]
FROM DATA
GROUP BY ID, Value
ORDER BY ID, Start
nhưng điều đó mang lại cho
ID Start Value Count
-- ----- ----- -----
1 1 1 1
5 1 100 2
5 2 200 2
10 10 10 1
nhóm tất cả các hàng có cùng giá trị, không chỉ các hàng liên tiếp.
Bất kỳ ý tưởng nào? Từ những gì tôi đã nhìn thấy, tôi tin rằng tôi phải rời khỏi bàn với chính nó trên các hàng liên tiếp bằng cách sử dụng ROW_NUMBER(), nhưng tôi không chắc chắn chính xác làm thế nào để có được đếm từ đó.
Xin cảm ơn trước.
Tra cứu [khoảng trống và đảo] (http://stackoverflow.com/questions/tagged/gaps-and-islands) –