Problema query con sum

  • Creatore Discussione Creatore Discussione ste902
  • Data di inizio Data di inizio

ste902

Utente Attivo
15 Nov 2012
32
0
0
Ciao a tutti. Io ho le seguenti tabelle
Entrate (Id_entrate*, SKU, Fornitore, PrezzoVendita, Data)
Uscite (Id_uscite*, Tipo, Destinatario, ImportoNetto, PeriodoRiferimento)
* primaria

Devo fare unq query che preso come input un periodo mi ritorni Il fornitore, la somma delle vendite di quel fornitore e la somma delle uscite a favore di tal fornitore in tale periodo.

Io ho fatto cosi:
Select Fornitore, Sum(PrezzoVenditaTotale), Sum(ImportoNetto) From Entrate, Uscite Where Fornitore = Destinatario and Tipo='Pagamento fornitori' and Data>='2013-07-01' and Data<='2013-07-31' and MeseRiferimento>='2013-07-01' and MeseRiferimento<='2013-07-31' Group By Fornitore

Purtroppo cosi facendo mi somma le uscite tante volte quanto sono le vendite.
Vi faccio un'esempio:
Entrate (Id_entrate*, SKU, Fornitore, PrezzoVendita, Data)
a 01 tizio 10 2013-07-05
b 02 tizio 45 2013-07-06
c 02 tizio 20 2013-07-15
d 08 caio 10 2013-07-18
e 08 caio 15 2013-07-19
f 08 paolo 10 2013-07-25

Uscite (Id_uscite*, Tipo Destinatario, ImportoNetto, PeriodoRiferimento)
a Pagamento Fornitori tizio 20 2013-07-01
b Pagamento Fornitori tizio 15 2013-07-01
c Pagamento Fornitori tizio 5 2013-07-01

Risultato corretto:
Fornitore SUM(PrezzoVendita) SUM(ImportoNetto)
tizio 75 20
caio 25 15
paolo 10 5

Risultato con la mia query
Fornitore SUM(PrezzoVendita) SUM(ImportoNetto)
tizio 75 60
caio 25 30
paolo 10 5

Sapete dirmi dove sbaglio? Grazie!
 
Prova a dividere la query in due parti per fare delle prove (visto che la sintassi sembra essere esatta e anche il ragionamento).
Prova a fare una query che esegua sono il SUM(ImportoNetto) e vedi se funziona correttamente in modo da capire come mai da risultati sballati in quella query.
 
Grazie, sono riuscito a risolvere dividendola in 2 query separate e inserensole dentro la clausola FROM di un'altra query
 
SELECT T.Fornitore, T.SUM1, T2.SUM2
FROM (SELECT Fornitore, Sum( PrezzoVenditaTotale ) AS SUM1
FROM Entrate
WHERE Data >= '2013-07-01'
AND Data <= '2013-07-31'
Group By Fornitore) AS T,
(Select Destinatario, Sum(ImportoNetto) AS SUM2 From Uscite Where Tipo='Pagamento fornitori' and MeseRiferimento>='2013-07-01' and MeseRiferimento<='2013-07-31' Group By Destinatario) AS T2
Where T2.Destinatario=T.Fornitore

Grazie ancora!
 

Discussioni simili