Newsgroup: it.comp.appl.access
Titolo: Query un po' complicata?

Spero non lo sia per voi. Io č da qualche giorno che cerco (senza successo)
come interrogare Access in questo modo:
ho un archivio di spese. Per ogni spesa, memorizzo la data in cui č stata
fatta, la tipologia (collegata da un'altra tabella), la valuta ed il tasso
di cambio.
La struttura della tabella dunque č:
id_spesa    contatore
descriz        testo
data            data
tipo            chiave esterna
valore        numero
moneta        chiave esterna per il nome delle valute disponibili
cambio        numero
Quello che mi serve č una query che generi:
- per colonna le tipologie di spesa
- per riga le date in cui sono state fatte delle spese, o meglio indicazioni
tipo "Aprile 2002", "Maggio 2002", etc.
- nelle caselle, il totale delle spese fatte in quel lasso di tempo per
quella data categoria
e poi
- nell'ultima riga, il totale per ogni categoria dei periodi considerati
- nell'ultima colonna il totale di tutte le categorie per ciascun periodo
Es:
            Telefono    Viaggio    Vitto
Apr        100            50            30        180
Mag        80            100           20        200
Giu         130            45            0          175
              310            195          50
Spero davvero qualcuno possa aiutarmi. Grazie comunque a tutti per
l'entusiasmo e l'energia che mettete in questo newsgroup.
Eri

 Eri
Se la tabella che contiene i dati e di cui hai postato la struttura si
chiama tblSpese.
Se la tabella che contiene le descrizioni delle tipologie di spese si chiama
tblTipologie ed ha una struttura di questo tipo:
id_tipologia        Contatore e chiave primaria
tipologia             Testo
Se l'importo da sommare è dato dal prodotto del campo valore per il campo
cambio.
Creati una query unione chiamata Query1 che abbia il seguente codice SQL:
SELECT tblSpese.id_spesa, Format([data], "mmmm yyyy") AS Mese,
Format([data],"yyyy mm") AS Mese2, tblTipologie.tipologia, [valore]*[cambio]
AS Importo
FROM tblTipologie INNER JOIN tblSpese ON tblTipologie.id_tipologia =
tblSpese.tipo
UNION SELECT tblSpese.id_spesa, "T O T A L E" AS Mese, "ZZZZZZ"  AS Mese2,
tblTipologie.tipologia, [valore]*[cambio] AS Importo
FROM tblTipologie INNER JOIN tblSpese ON tblTipologie.id_tipologia =
tblSpese.tipo;
Creati quindi, basandola sulla query unione Query1, una query a campi
incrociati che abbia il seguente codice SQL:
TRANSFORM CDbl(Nz(Sum(Query1.Importo), 0)) AS [Il valore]
SELECT Query1.Mese, Sum(Query1.Importo) AS [Totale Mese]
FROM Query1
GROUP BY Query1.Mese2, Query1.Mese
PIVOT Query1.tipologia;
Aprendo la query a campi incrociati dovresti vedere il risultato che volevi.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

> Aprendo la query a campi incrociati dovresti vedere il risultato che
volevi.
Credo sia il cielo che ti manda di domenica nel mio computer! Credo anche
che per realizzare una query del genere avrei avuto bisogno ancora (semmai
fossi riuscito a scriverla) di giorni di tentativi o di parecchio codice VB!
Credimi, non so davvero come ringraziarti. Il tuo intervento mi fa anche
riflettere sulla necessità di finire quanto prima questo lavoro.
Ancora grazie
Eri