0

従業員のスケジュールを含むテーブルがあります。

create table dbo.schedules
(agentID int,
dayID int,
shiftStart time, 
break1Start time, 
break1stop time,
lunchStart time, 
lunchStop time, 
break2Start time,
break2Stop time,
shiftEnd time,
offindicator bit
)

8:00 から 21:00 までの 15 分単位で対応可能なエージェントの数を合計したいと考えています。

どうすればいいですか?

これまでのところ、評価するための次のコードがあります。

select 
sum(case when offindicator = 1 or @timeslot < shiftStart or  (@timeslot >= 
break1Start and @timeslot <break1stop) OR (@timeslot >= break2Start and @timeslot <
break2stop) OR @timeslot >= shiftend then 0 else 1 end) [onoff]
from dbo.schedules

...しかし、今は次のようなタイムスロットとカウントのリストが必要です:

DayID | Timeslot | Count

1 |   8:00  |  15

1 |  8:15   |  10

1 |  8:30   |  20

1 |  8:45   |  10

スケジュール テーブルのサンプル データ:

(   215,    1,  NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   1   )
,(  215,    2,  '08:00',    '10:20',    '10:35',    '12:30',    '12:45',    '15:00',    '15:15',    '17:00',    0   )
,(  215,    3,  '08:00',    '10:20',    '10:35',    '12:30',    '12:45',    '15:00',    '15:15',    '17:00',    0   )
,(  215,    4,  '08:00',    '10:20',    '10:35',    '12:30',    '12:45',    '15:00',    '15:15',    '17:00',    0   )
,(  215,    5,  '08:00',    '10:20',    '10:35',    '12:30',    '12:45',    '15:00',    '15:15',    '17:00',    0   )
,(  215,    6,  '08:00',    '10:20',    '10:35',    '12:30',    '12:45',    '15:00',    '15:15',    '17:00',    0   )
,(  215,    7,  NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   1   )
4

1 に答える 1