Hãy nói rằng tôi có bảng sau:Chọn hàng nơi giá trị cột đã thay đổi
Value Time
0 15/06/2012 8:03:43 PM
1 15/06/2012 8:03:43 PM *
1 15/06/2012 8:03:48 PM
1 15/06/2012 8:03:53 PM
1 15/06/2012 8:03:58 PM
2 15/06/2012 8:04:03 PM *
2 15/06/2012 8:04:08 PM
3 15/06/2012 8:04:13 PM *
3 15/06/2012 8:04:18 PM
3 15/06/2012 8:04:23 PM
2 15/06/2012 8:04:28 PM *
2 15/06/2012 8:04:33 PM
Làm thế nào để chọn các hàng đóng vai chính, có nghĩa là, nơi Value
đã thay đổi? Về cơ bản tôi đang cố gắng tìm thời gian khi Value
đã thay đổi để tôi có thể thực hiện các truy vấn khác dựa trên các khoảng thời gian đó. Giải pháp không nên phụ thuộc vào việc biết trước Value
hoặc Time
.
Dường như với tôi rằng điều này không phải là rất khó (nhưng nó đủ khó cho tôi rõ ràng!).
Tôi hiện đang sử dụng SQL Server 2008 mặc dù tôi có quyền truy cập vào năm 2012 nếu các chức năng cửa sổ/phân tích mới hữu ích.
Tôi đã thử điều chỉnh các giải pháp ở đây http://blog.sqlauthority.com/2011/11/24/sql-server-solution-to-puzzle-simulate-lead-and-lag-without-using-sql-server-2012-analytic-function/ nhưng truy vấn của tôi không hoàn thành sau một giờ! Tôi nghĩ rằng sự gia nhập nổ kích thước hàng để một cái gì đó không thể quản lý (hoặc tôi screwed nó lên).
Tôi có thể giải quyết vấn đề này bằng mã C# và nhiều cuộc gọi db, nhưng có vẻ như có thể thực hiện một hàm có giá trị bảng hoặc SP sẽ đẹp hơn nhiều.
Ngoài ra, giải pháp chỉ hoạt động khi tăng Value
là OK nếu điều đó dễ dàng hơn.
Thật tuyệt vời nhanh. Tăng giá trị là OK. Tôi sẽ thử nó. – agentnega
Tuyệt vời, cảm ơn @Aaron Bertrand. Trên dữ liệu của tôi phiên bản thứ hai mất ít hơn gấp đôi thời gian của phiên bản đầu tiên, do đó, sự khác biệt hiệu suất không phải là quá xấu. – agentnega
Làm thế nào để chuyển đổi truy vấn này cũng bao gồm một ID (cột mới) trong kết quả đầu ra? – ThinkCode