Buongiorno,
ho una tabella (My_Shifts) di questo tipo:

ShiftNum / ShiftWeekday / ShiftStartHH/ ShiftDuration / ShiftDescr /ShiftActive/ ShiftEndNextDay
1 1 7 480 Turno 1 True False
1 2 7 480 Turno 1 True False
1 3 7 480 Turno 1 True False
1 4 7 480 Turno 1 True False
1 5 7 480 Turno 1 True False
1 6 7 480 Turno 1 True False
1 7 7 480 Turno 3 True False
2 1 15 480 Turno 2 True False
2 2 15 480 Turno 2 True False
2 3 15 480 Turno 2 True False
2 4 15 480 Turno 2 True False
2 5 15 480 Turno 2 True False
2 6 15 480 Turno 2 True False
2 7 15 480 Turno 3 False False
3 1 23 480 Turno 3 False True
3 2 23 480 Turno 3 False True
3 3 23 480 Turno 3 False True
3 4 23 480 Turno 3 False True
3 5 23 480 Turno 3 False True
3 6 23 480 Turno 3 False True
3 7 23 480 Turno 3 False True

Sostanzialmente mostra i turni attivi nella giornata (flag Attivo) con ora inizio e durata per ogni giorno della settimana. Qui ad esempio lavorano tutti i giorni su due turni dalle 7-15 e 15-23
L'operatore inserir� a terminale una dataora inizio e dataora fine e devo estrarre il totale dei minuti disponibili.
Esempio:
dal 20/02/2017 07:00 al 21/02/2017 07:00 = 960 minuti disponibili

Avete qualche idea?

Io mi sono fatto una tabella mycalendar con tutti i gg dell'anno e poi ho fatto questa query:

SELECT (CASE WHEN DATEPART(dw, '27/02/2017') <> 7 THEN SUM(ShiftDurationMinutes) - DATEDIFF(minute, '20/02/2017 00:00:00', '20/02/2017 7:00:00') - - DATEDIFF(minute, '28/02/2017 00:00:00', '27/02/2017 7:00:00')
ELSE SUM(ShiftDurationMinutes) - DATEDIFF(minute, '20/02/2017 00:00:00', '20/02/2017 7:00:00') - 60 END) AS ShiftDurationTot
FROM (SELECT CONVERT(char(10), A.LocalTimeCol, 103) AS Day, dbo.My_Shifts.ShiftDurationMinutes
FROM dbo.My_Calendar AS A INNER JOIN
dbo.My_Shifts ON DATEPART(dw, A.LocalTimeCol) = dbo.My_Shifts.ShiftWeekday
WHERE (A.LocalTimeCol >= '20/02/2017 00:00:00') AND (A.LocalTimeCol <= '27/02/2017 00:00:00') AND (dbo.My_Shifts.ShiftActive = 1)
GROUP BY CONVERT(char(10), A.LocalTimeCol, 103), dbo.My_Shifts.ShiftNum, dbo.My_Shifts.ShiftDurationMinutes) AS B

Ma ha qualche buco.... in pi� forse si fa senza fare una ulteriore tabella.

Grazie per ogni eventuale aiuto e consiglio!