Tôi có một bảng với cấu trúc sauGet Thời gian chênh lệch giữa nhóm các bản ghi
ID ActivityTime Status
19 2013-08-23 14:52 1
19 2013-08-23 14:50 1
19 2013-08-23 14:45 2
19 2013-08-23 14:35 2
19 2013-08-23 14:32 1
19 2013-08-23 14:30 1
19 2013-08-23 14:25 2
19 2013-08-23 14:22 2
53 2013-08-23 14:59 1
53 2013-08-23 14:56 1
53 2013-08-23 14:57 1
53 2013-08-23 14:52 2
53 2013-08-23 14:50 2
53 2013-08-23 14:49 2
53 2013-08-23 14:18 2
53 2013-08-23 14:30 1
Tôi muốn tính toán tổng số chênh lệch thời gian cho mỗi ID chống Status 2. Ví dụ ID 19 ở lại Tình trạng 2 từ 14 : 35 đến 14:50 (15 phút), sau đó 14:22 đến 14:30 (8 phút). Vì vậy, tổng số ID 19 ở trạng thái 2 là 23 phút. (Trong cả hai trường hợp, tôi coi thời gian tối thiểu cho trạng thái 2 là trạng thái 1) Vấn đề là làm cách nào để chỉ bao gồm sự khác biệt giữa trạng thái khác nhau trong hàng kế tiếp.
Ví dụ: tôi sẽ loại trừ bản ghi đầu tiên trong bảng có trạng thái 1 và chọn hàng thứ hai. Tương tự là trường hợp với Trạng thái 2. Tôi sẽ chọn thời gian tối thiểu, tính toán sự khác biệt của chúng và sau đó thêm chúng cho nhiều nhóm trạng thái đối với mỗi kênh.
Tôi đã thử sử dụng CURSOR nhưng dường như không hoạt động. Tôi cũng khá tự tin rằng tôi có thể đạt được điều đó trong C# sau khi nhận được tất cả các dữ liệu và sau đó lặp qua nó. Nhưng tôi chỉ tự hỏi nếu có một cách trực tiếp để nhận được thông tin mà không có một vòng lặp. Tôi cũng đã tạo một dữ liệu SQL fiddle nhưng tôi không thể làm cho nó hoạt động được. Tôi đến từ nền C# với kiến thức cơ bản về SQL. Sẽ rất vui nếu ai đó có thể giúp tôi.
'14:35 Để 14:50 (5 phút) '? 5 phút hoặc 15 phút? Bạn nên xem lại quy tắc trong câu hỏi của mình và đảm bảo rằng đó là quy tắc bạn muốn vì điều rất quan trọng đối với câu trả lời có thể giúp bạn. –
Tôi không hoàn toàn có được những gì bạn muốn làm .. bạn có thể xây dựng thêm một chút không? – Botis
@KingKing, đó là lỗi đánh máy, cảm ơn bạn đã chỉ ra điều đó. – user2711965