[MSSQL] Query Raggruppamento su MESE

sabato 28 novembre 2009 - 10.00

Blacky Profilo | Newbie

Ciao a tutti e buon WE.
Ho bisogno di realizzare questo:

Ho 2 tabelle unite tra loro che hanno 2 colonne ciascuna: ricevuta e valore.
Ricevuta è un campo datetime e valore è un campo money.

Con questa query visualizzo tutte le date ed i valori corrispondenti

SELECT ricevuta, valore FROM com_offerte_modifiche
WHERE valore > 0 AND year(com_offerte_modifiche.ricevuta)=@anno
UNION
SELECT ricevuta, valore FROM com_eco_fatt
WHERE year(ricevuta)=@anno

RICEVUTA VALORE
2009-01-02 | 100
2009-01-02 | 200
2009-02-02 | 200
2009-02-02 | 400
2009-03-02 | 200
2009-03-02 | 300

Quello che devo fare è raggruppare per MESE/ANNO la colonna RICEVUTA e SOMMARE ovviamente il valore.
Quindi deve venire:

01/09 300
02/09 600
03/09 500

Mi aiutete perfavore?
Baci!

P.s. Se serve creo lo script per le tabelle, ma sono davvero banali.

lbenaglia Profilo | Guru

>Quello che devo fare è raggruppare per MESE/ANNO la colonna RICEVUTA
>e SOMMARE ovviamente il valore.
>Quindi deve venire:
>
>01/09 300
>02/09 600
>03/09 500
>
>Mi aiutete perfavore?

Ciao Francesca,

per ottenere quel risultato potresti convertire Ricevuta in una stringa nel formato dd/mm/yy, ignorare i primi 3 caratteri e raggruppare il tutto come nel seguente esempio:

USE tempdb; CREATE TABLE dbo.foo( Ricevuta datetime NOT NULL, Valore money NOT NULL ); INSERT dbo.foo VALUES ('20090102', 100) , ('20090102', 200) , ('20090202', 200) , ('20090202', 400) , ('20090302', 200) , ('20090302', 300); WITH CTE_GetData (Ricevuta, Valore) AS ( SELECT SUBSTRING(CONVERT(char(8), Ricevuta, 3), 4, 5) , Valore FROM dbo.foo ) SELECT Ricevuta, SUM(Valore) AS Totale FROM CTE_GetData GROUP BY Ricevuta; /* Output: Ricevuta Totale -------- --------------------- 01/09 300,00 02/09 600,00 03/09 500,00 (3 row(s) affected) */ DROP TABLE dbo.foo;

>Baci!
WOW!

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5