Newsgroup: it.comp.appl.access
Titolo: confrontare periodi diversi sulla stessa maschera - report - query

Io vorrei creare una maschera che mi permetta di confrontare, per un
dato cliente, quanto ha fatturato in due diversi periodi (anno attuale
vs. anno scorso). Ovvio che si basa la maschera su una query di
raggruppamento, che mi somma tutto il fatturato relativo a quel tal
cliente, ma il problema sta nel filtro. Se io metto, poniamo, il filtro
"data fattura nel 2005", per tutti i campi della query mi verranno
mostrati solamente i dati del 2005 ovviamente, mentre a me piacerebbe
avere, nella stessa query, un campo "fatturato nel 2004" e  un campo
"fatturato nel 2005", 2 campi nello stesso record. Un modo di risolvere
il problema sarebbe quello di creare 3 query: una con il fatturato del
2004 raggruppato x cliente, una con il fatturato del 2005 sempre
raggruppato x cliente, ed una terza query riassuntiva basata sulla tab
clienti e su queste 2 query, con la 1 Q che mi dà il fatturato del
2004 e la 2° Q che mi dà il fatt del 2005 su 2 distinti campi.
Il problema è che vorrei riuscire a far tutto con 1 unica query, da
mettere nelle proprietà della maschera, così da essere sicuro che la
maschera sta in piedi da sola, e non rischio poi di avere tonnellate di
query che non so a cosa si riferiscono....
QUalcuno mi sa dire che sintassi serve x avere in 1 campo di 1 query
una somma di tot campi di 1 altra Q?
Che so, qcosa del tipo
SELECT
Idcliente,
(sum(TotFattura) WHERE (idcliente=AnagraficaClienti.idcliente AND
dataFattura>1/1/2005) FROM fatture) AS fatturato_2005,
""---stesso x il 2004--""
FROM AnagraficaClienti
ve lo chiedo xchè ci ho provato, ma non mi funzia: nello specifico,
con questa query il "filtro" messo all'interno (fai la somma del
fatturato solamente per i record della tab fatture che hanno lo stesso
idcliente del cliente che stai considerando). La query, in altre
parole, gira, ma x ogni cliente mi mette il fatturato totale dello
studio, invece che quello relativo al cliente stesso.
Ho provato a mettere il filtro anche nella clausola HAVING invece che
nella clausola WHERE, ma lo stesso non mi filtra x cliente.
Please, cosa sbaglio nella sintassi?
la Query precisa che uso è:
-------
SELECT
Idcliente,
(SELECT Sum(FattureQ.totalenetto) AS SommaDitotalenetto FROM FattureQ
WHERE (((FattureQ.DataFattura)>#1/1/2005#)AND
((IdCliente)=Anagraficaclienti.idcliente)    )
HAVING ((IdCliente)=Anagraficaclienti.idcliente) ;
) AS fatturato_2005
FROM AnagraficaClienti
--------------
con 1 solo importo fatturato (x ora) e con il filtro cliente SIA  nella
WHERE che nella HAVING (ma anche su 1 solo dei 2 non funzia).
tks a lot

 ha scritto nel messaggio
news:1119966773.5...@z14g2000cwz.googlegroups.com...

Se i dati sono contenutiin una tabella chiamata FattureQ che ha una
struttura simile a questa:
ID                  Contatore e chiave primaria
DataFattuta    Data/ora
totalenetto      Valuta
IDCliente        Numerico
ecc. ecc.
Prova con una query che abbia il seguente codice SQL:
SELECT DISTINCT Pippo.IdCliente, (SELECT Sum(totalenetto) FROM FattureQ
WHERE ((Year(DataFattura) = 2004) AND (IdCliente = Pippo.IdCliente));) AS
Fatturato_nel_2004, (SELECT Sum(totalenetto) FROM FattureQ WHERE
((Year(DataFattura) = 2005) AND (IdCliente = Pippo.IdCliente));) AS
Fatturato_nel_2005
FROM FattureQ AS Pippo;
-- 
Roberto
-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------


Ancora grazie & ciao, Roberto :-)

Ancora grazie & ciao, Roberto :-)
-- 
