Ciao, non essendo una cima in sql sono qui a chiedervi una mano
Devo fare una statistica sul numero di pratiche fatte in determinato anno diviso per mese..
ho una tabella "Pratiche": id, dataInizio, costoUnitario, numGiorni .
voglio il numero di pratiche fatte per l'anno 2009 con il relativo valore totale dato dalla moltiplicazione del costoUnitario * numGiorni diviso per mese. Fino a qui ci arrivo quindi:
codice:
SELECT 
DatePart(year,p1.dataInizio) as anno, 
DatePart(month,p1.dataInizio) as mese, 
Count(DatePart(month,p1.dataInizio)) as NumeroPratiche, 
SUM
	(
		(p1.unitCost * p1.numGiorni)
	) 

	as Tot
FROM Pratica p1
GROUP BY DatePart(month,p1.dataInizio), DatePart(year,p1.dataInizio)
HAVING DatePart(year,p1.dataInizio) = 2009
mi restituisce:
codice:
anno        mese        NumeroPratiche Tot
----------- ----------- -------------- ----------------------
2009        2           3              62,94
2009        8           2              62,3
2009        10          1              450
ok.. funziona.. il problema sorge perchè in questa query vengono coinvolte altre tabelle. Innanzitutto una tabella dettagli così fatta:
codice:
id          praticaId   prodottoId  prodottoUnitCost       prodottoQta 
----------- ----------- ----------- ---------------------- ----------- 
59          7           1           2                      1           
60          18          1           2,11                   1           
61          18          2           10,33                  5           
62          18          1           12,13                  1           
63          19          2           10                     1           
64          19          2           2                      5           
65          19          1           1,22                   8
dalla quale devo prendere il totale dato dalla moltiplicazione del campo prodottoUnitCost * prodottoQta filtrando le righe per praticaId.
Anche in questo caso ci riesco perchè la query è abbastanza semplice:
codice:
select pd1.praticaId,
SUM(pd1.prodottoUnitCost * pd1.prodottoQta) totDettagli
from praticaDettagli pd1, pratica pd2
GROUP BY pd1.praticaId, pd2.id
HAVING pd1.praticaId = pd2.id AND pd2.id = 19
che mi restituisce:
codice:
praticaId   totDettagli
----------- ----------------------
19          29,76
quel totDettagli dovrebbe essere sommato al totale della prima query.
Ma non è finita qui
Ogni pratica ha uno storico.. ed un dettaglio dello storico. Non stò a scrivervi le query perchè sono praticamente uguali a queste due solo che ci sono i filtri di mezzo ("praticaId" per lo storico pratica e "praticaStoricoId" per il dettaglio dello storico).
Adesso il post comincia ad essere troppo lungo e non voglio esagerare
Comunque queste quattro tabelle sono quelle coinvolte nella prima query, solo che non riesco a mettere insieme le query per trovare il totale comprensivo del calcolo sui dettagli di ogni pratica, sullo storico di ogni pratica e sui dettagli dello storico di ogni pratica.. help me! []
danke!!