un saluto a tutto il gruppo
Premetto che mi avvicino alle query da autodidatta e sto scrivendo una procedura in VB6.
Chiedevo un aiuto per la soluzione ad un problema che mi è sorto.
Ho una tabella contenente vari campi. Quelli che a me interessano sono principalmente 4
Distributore - DataMontaggio o DataSmontaggio - TipoTest - Stato
Ora con tipo test ho 4 valori 0 - 1 - 2 - 3 0 e 3 indicano Montaggio 1 e 2 Smontaggio
Devo calcolare il totale dei test , e fino qui ci sono arrivato, ma vorrei avere come risultato della query
Distributore | Totale Montaggi | Totale Smontaggi ! Somma Totale Montaggi+Smontaggi
e quì iniziano i problemi poichè Se stato è = 0 deve essere conteggiato il record se >0 no
e altra richiesta è la possibilità di inserire un periodo di date .
Con le prove che ho realizzato riesco ad ottenere le 4 colonne ma mi mette come valore il totale errato e se cambio le date i valori non cambiano.
Posto la query utilizzata sperando che qualcuno possa risolvere il quesito.
Risultato corretto del totale scartando le schede con valore Stato >0 solo totale generale
'----------------------------------------------------------------------
SELECT T_Schede.Id_Distributore, T_Distributori.Distributore, Count(*) AS Totali
FROM T_Schede INNER JOIN T_Distributori ON T_Schede.Id_Distributore = T_Distributori.Id_Distributore
WHERE (((T_Schede.stato)=0) AND ((T_Schede.Data_Smontaggio) Between #1/1/2015# And #9/19/2015#))
GROUP BY T_Schede.Id_Distributore, T_Distributori.Distributore;
'----------------------------------------------------------------------
Query che non funziona perchè cambiando il range di date i risultati non cambiano e non tiene conto dello stato >0
'----------------------------------------------------------------------
SELECT T_Schede.Id_Distributore, T_Distributori.Distributore, (select count(*) as tot from t_schede as Tschede where Tschede!TipoLavoro in (0,3) and Tschede.id_distributore = t_schede.id_distributore ) AS T_Montaggio, (select count(*) as tot from t_schede as Tschede where Tschede!TipoLavoro in (1,2) and Tschede.id_distributore = t_schede.id_distributore ) AS T_Smontaggio, [T_Montaggio]+[T_Smontaggio] AS TotaliFROM T_Schede LEFT JOIN T_Distributori ON T_Schede.Id_Distributore = T_Distributori.Id_Distributore
WHERE (((T_Schede.Data_Smontaggio) Between #1/1/2015# And #9/23/2015#) AND ((T_Schede.stato)=0))
GROUP BY T_Schede.Id_Distributore, T_Distributori.Distributore;
Grazie