Hai bảng tạm thời được tạo và sau đó được nạp ... Đây là lược đồ.Kịch bản lệnh T-SQL - các vấn đề logic với dòng thời gian
Create table #SH ([date] datetime,
sched_id int,
agent_id int)
Create table #SD (sched_id int,
start_minute int,
length int,
exception_code int)
(Giản đồ và thiết kế là thứ tôi không thể thay đổi, cả bảng tạm thời đều được tải từ tệp phẳng. Tôi có thể giới thiệu và tải bảng tạm thời mới nếu cần).
Một nền nhỏ - Bảng tiêu đề #SH giữ lịch biểu người là 'Start_minute' và chuyển sang 'schedule_length' trong vài phút. Ví dụ: nếu phút bắt đầu và thời lượng lịch biểu là cả 480, sẽ đọc là 8 giờ sáng (8am = 480 phút) và đến 4 giờ chiều (480 phút sau, 4 giờ chiều = 960 phút)
Bảng #SD chứa ngoại lệ đối với tiêu đề. Trong ví dụ trên, người đó có thể sẽ có ngoại lệ cho bữa trưa sẽ là start_minute = 720 và chiều dài 30 (12:00 - 12:30).
Ngày và agent_id là điều duy nhất tôi quan tâm ra khỏi #SH, các thông tin ngoại lệ trong #sd là những gì tôi đang quan tâm đến việc
truy vấn này:.
Select [date],#sd.start_minute,#sd.length,#sd.start_minute + #sd.length as 'end_minute',agent_id
from #SH
inner join #SD on #SD.sched_id = #sh.sched_id
* end_minute là cuối cùng một giá trị tính toán của mình bắt đầu + chiều dài = cuối
này trả về một cái gì đó như:
Date Start length end
1 2010-11-11 600 30 630
2 2010-11-11 630 40 670
3 2010-11-11 750 15 765
4 2010-11-11 800 40 840
Bây giờ tôi ước tôi có thể nói điều này đã kết thúc và bỏ đi ... nhưng các vấn đề nhập dữ liệu tồn tại. Trong dòng 1 và 2, thời gian kết thúc của dòng 1 dòng lên với thời gian bắt đầu ở dòng 2 và cần được kết hợp để kết quả của tôi trông như thế này:
Date Start length end
1 2010-11-11 600 70 670
2 2010-11-11 750 15 765
3 2010-11-11 800 40 840
Bất cứ ý tưởng là làm thế nào để xây dựng logic này vì vậy tôi có được 3 dòng trở lại thay vì 4? Tôi đang làm việc để tự mình tham gia bảng trên # sd1.start + # sd1.length = # sd2.start ngay bây giờ.
Và để làm phức tạp hơn nữa ... ví dụ trên là 2 dòng cần kết hợp. Tôi đã đi qua một kỷ lục đã có 30 1 phút mục liên tiếp mà tôi sẽ cần phải thực hiện vào một kỷ lục duy nhất. May mắn là họ không thể chồng lên nhau (bạn sẽ không có 2 bản ghi trong cùng một phút), nhưng tôi không nghĩ rằng câu lệnh kết hợp mà tôi đang cân nhắc ở trên sẽ làm việc cho điều đó.
Đã thực hiện một vài chỉnh sửa về ngữ pháp của riêng tôi ... có thêm một vài cột trong #SH, nhưng chúng không liên quan. – Twelfth