Ho una tabella di dati che sembra un po 'come questo:Iterare date in SQL
Name StartTime FinishTime Work
Bob 2010-08-03 08:00:00 2010-08-03 12:00:00 4
Bob 2010-08-03 13:00:00 2010-08-03 16:00:00 3
Pete 2010-08-04 08:00:00 2010-08-04 12:00:00 4
Mark 2010-08-04 10:00:00 2010-08-04 12:00:00 2
Nessuno di questi intervalli di date deve mai estendersi oltre la mezzanotte.
Voglio scrivere SQL che mi darà il risultato seguente, dato un input Data di inizio del 2010-08-02 e una finitura Data di 2010-08-05
Date Name TotalWork
2010-08-03 Bob 7
2010-08-03 Pete 3
2010-08-04 Pete 4
2010-08-04 Mark 2
ho potuto vivere con, e in infatti può in ultima analisi essere necessario, per avere giorni che non hanno lavoro associato anche essere rappresentati nei risultati esposti, forse come una riga come questa:
2010-08-05 NULL 0
io non sono molto sicuro come eseguire un'iterazione in date in SQL allo stesso modo che vorrei con altre lingue.
Per dare un po 'di contesto, l'output di questo verrà inserito in un controllo .Net.
Qualcuno potrebbe darmi un indizio, un collegamento a un tutorial o qualche altro aiuto? Altrimenti, penso che ci metterò a giocherellare per giorni!
Grazie!
Jonathan
Ah ... sembra davvero buono, grazie. Lo prendo se voglio usare i parametri @SD e @ED, indipendentemente dal fatto che voglio i giorni mancanti, quindi devo costruire la tabella temporanea? – JonRed
@JonRed, No se non vuoi le date mancanti, quindi usa il primo SQL. In quel caso non hai bisogno delle variabili T-Sql o della tabella temporanea. Se hai bisogno delle date mancanti, allora hai bisogno della tabella temporanea e le variabili T-Sql sono necessarie per popolarlo. –
Davvero un buon trucco ... – Zafer