Quantcast
Channel: Visual Basic Tips and Tricks
Viewing all articles
Browse latest Browse all 2212

Query Nidificate

$
0
0

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 Totali
FROM 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 





 




Viewing all articles
Browse latest Browse all 2212