Principale utente con più risposte
Aggregazione oraria da quarti ora

Domanda
-
Ciao a tutti,
ho una tabella con valori numerici riferiti ai quarti d'ora della giornata.
Qualcosa del tipo:
Valore - QuartoOra
2 - 2012-12-01 00:15:00.000
3 - 2012-12-01 00:30:00.000
6 - 2012-12-01 00:45:00.000
1 - 2012-12-01 01:00:00.000
3 - 2012-12-01 01:15:00.000
7 - 2012-12-01 01:30:00.000
2 - 2012-12-01 01:45:00.000
4 - 2012-12-01 02:00:00.000
...
Dovrei creare ora una query che mi popoli una tabella oraria, del tipo:
Valore - Ora
12 - 1
16 - 2
ove la somma dei quarti d'ora comincia al minuto 15 e termina al minuto 00
dell'ora seguente.Purtroppo non ho ancora trovato il modo di risolvere questo problema.
Qualcuno è in grado di darmi una mano?
Luigi
Risposte
-
Ciao Luigi,
puoi fare così:
-- Creo la tabella CREATE TABLE #T (Valore int, QuartoOra DateTime) -- inserisci i dai di esempio INSERT INTO #T VALUES (2,'2012-12-01 00:15:00.000'), (3,'2012-12-01 00:30:00.000'), (6,'2012-12-01 00:45:00.000'), (1,'2012-12-01 01:00:00.000'), (3,'2012-12-01 01:15:00.000'), (7,'2012-12-01 01:30:00.000'), (2,'2012-12-01 01:45:00.000'), (4,'2012-12-01 02:00:00.000') -- Eseguo la select SELECT DATEPART(hh,DATEADD(N,-15,QuartoOra))+1 AS Ora, SUM(Valore) AS SommaDiValore FROM #T GROUP BY DATEPART(hh,DATEADD(N,-15,QuartoOra))+1 DROP TABLE #T /*Risultato Ora SommaDiValore ----------- ------------- 1 12 2 16 */
se i dati sono relativi a più giorni raggruppa anche per data senza la parta ora.
Ciao
Giorgio Rancati- Proposto come risposta Fabrizio GiammariniMVP, Moderator venerdì 21 dicembre 2012 13:06
- Contrassegnato come risposta Ciupaz venerdì 21 dicembre 2012 14:42
Tutte le risposte
-
Ciao Luigi,
puoi fare così:
-- Creo la tabella CREATE TABLE #T (Valore int, QuartoOra DateTime) -- inserisci i dai di esempio INSERT INTO #T VALUES (2,'2012-12-01 00:15:00.000'), (3,'2012-12-01 00:30:00.000'), (6,'2012-12-01 00:45:00.000'), (1,'2012-12-01 01:00:00.000'), (3,'2012-12-01 01:15:00.000'), (7,'2012-12-01 01:30:00.000'), (2,'2012-12-01 01:45:00.000'), (4,'2012-12-01 02:00:00.000') -- Eseguo la select SELECT DATEPART(hh,DATEADD(N,-15,QuartoOra))+1 AS Ora, SUM(Valore) AS SommaDiValore FROM #T GROUP BY DATEPART(hh,DATEADD(N,-15,QuartoOra))+1 DROP TABLE #T /*Risultato Ora SommaDiValore ----------- ------------- 1 12 2 16 */
se i dati sono relativi a più giorni raggruppa anche per data senza la parta ora.
Ciao
Giorgio Rancati- Proposto come risposta Fabrizio GiammariniMVP, Moderator venerdì 21 dicembre 2012 13:06
- Contrassegnato come risposta Ciupaz venerdì 21 dicembre 2012 14:42
-