Aiuto per query a più colonne e raggruppamenti in Access

venerdì 30 dicembre 2011 - 11.00

SydHeep Profilo | Newbie

Buongiorno al forum,
volevo chiedervi un aiuto su una query in access.
Dunque ho una tabella del tipo:
ID-Data-Valore-CodiceValore
------------------
1-18.08.2008-250-801
2-18.08.2008-750-802
3-11.09.2008-125-801
4-10.10.2008-550-901
5-17.10.2008-250-801
6-17.10.2008-250-903
7-16.11.2008-400-802
8-16.11.2008-200-901
9-21.11.2008-250-801

Vorrei creare una query che mi estragga e mi sommi i valori per mese/anno e raggruppati ed ordinati per CodiceValore.
Una tabella del genere:
Mese-Codice800-Codice900
-----------
Ago08-1000-0
Set08-0-125
Ott08-250-800
Nov08-650-200
Dic08-0-0


Con questa query sono riuscito a ottenere una cosa simile ma solo su una colonna:
SELECT MONTH([Data]) AS Mese, Sum(Valore) AS TotaleCodice800
FROM Movimenti
WHERE (Movimenti.CodiceValore] BETWEEN 801 AND 899) AND RIGHT (Movimenti.Data, 2) = "08"
GROUP BY MONTH([Data]), YEAR([Data])
ORDER BY YEAR([Data]) DESC , MONTH([Data]);

cioè:
Mese-TotaleCodice800
-----------
Ago08-1000
Set08-0
Ott08-250
Nov08-650
Dic08-0


Ma non riesco proprio a creare le due colonne...
è possibile o sbaglio approccio?

Grazie e ciao
Stefano

lbenaglia Profilo | Guru

>Ma non riesco proprio a creare le due colonne...
>è possibile o sbaglio approccio?

Ciao Stefano,

Quante famiglie di codici e di conseguenza quante colonne puoi avere? 2?

>Grazie e ciao
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/

SydHeep Profilo | Newbie

Ciao Lorenzo,
mille grazie per rapida risposta.

In teoria mi servono 9 classi (da 101 a 199, da 201 a 299, ... fino a 901-999).
Ma pensavo che capire la logica per creare due colonne fosse già un buon inizio...

Grazie ancora e ciao
Stefano

lbenaglia Profilo | Guru

>In teoria mi servono 9 classi (da 101 a 199, da 201 a 299, ...
>fino a 901-999).
>Ma pensavo che capire la logica per creare due colonne fosse
>già un buon inizio...

Ciao Stefano,

Allora, io andrei a scomporre il problema in 2 sottoproblemi: in prima istanza voglio razionalizzare meglio i dati e successivamente andrò ad eseguire una query pivot sugli stessi.

Problema 1: razionalizzazione dei dati
La query qryMovimenti non fa altro che restituire la colonna MeseAnno nel formato "mese esteso + anno di 2 cifre", il Valore e le 9 classi di codici nella colonna CodiceXXX:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Problema 2: Pivoting dei dati
A questo punto la qryPivot non fa altro che eseguire il pivoting dei dati restituiti dalla query qryMovimenti:

TRANSFORM Nz(SUM(Valore), 0) SELECT MeseAnno FROM qryMovimenti GROUP BY MeseAnno PIVOT CodiceXXX; /* Output: */ MeseAnno Codice800 Codice900 --------- ---------- ---------- ago08 1000 0 nov08 650 200 ott08 250 800 set08 125 0

>Grazie ancora e ciao
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/

SydHeep Profilo | Newbie

Ciao Luca,
... beh che dire, fantasmagorico...

Ora vedrò di capirla meglio e adattarla al mio programmino VB...
mille grazie e auguri di un felice anno nuovo.
Stefano
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5