Giuseppe21965,
credo che tu stia facendo una serie di confusioni:
giuseppe21965 ha scritto:
la quantità 2 dell'etichetta consegne è un campo numerico, come anche il nr. viaggio è gestito come campo numerico: il valore è 180 nell'esempio.
consegne 2, ddt 4567, viaggio nr.180
consegne 2, ddt 58867, viaggio nr. 180
Se eseguo la somma del campo "consegne" il risultato è 4 in realtà il valore giusto è 2 perché il viaggio è sempre lo stesso (numero viaggio 180).
Se vuoi conoscere il numero di consegne, di un determinato viaggio (ad esempio il nr. 180) non devi effettuare la somma ma il loro conteggio.
Infatti se prendiamo schematicamente la tua tabella conclusiva (denominandola "TabMovimenti")
ID Consegne Dtt NrViaggio
1 2 4567 180
2 2 98567 180
3 3 123 181
4 3 749 181
un esempio per determinare il numero delle occorrenze (del NrViaggio = 180) è il seguente:
SELECT TabMovimenti.NrViaggio, Count(TabMovimenti.NrViaggio) AS ConteggioDiNrViaggio
FROM TabMovimenti
GROUP BY TabMovimenti.NrViaggio
HAVING (((TabMovimenti.NrViaggio)=180))
ORDER BY TabMovimenti.NrViaggio;
in modo da ottenere:
NrViaggio ConteggioDiNrViaggio
180 2
Inoltre quando presenti:
giuseppe21965 ha scritto:
Altro esempio:
consegne 2, ddt 4567, viaggio nr.180
consegne 2, ddt 98567, viaggio nr.180
consegne 3, ddt 123, viaggio nr.181
consegne 3, ddt 749, viaggio nr.181
La somma delle consegne deve essere 5
è chiaro che per ottenere quel risultato (cinque) vorresti la somma delle consegne (in base al numero di viaggio) ma non facendo riferimento ai Dtt, quindi (come ti è stato indicato) prendendo "distintamente" il NrViaggio (e sommando le consegne prese una sola volta, in quanto queste sono già un risultato totale).
Un esempio, potrebbe essere il seguente:
SELECT TabMovimenti.NrViaggio
FROM TabMovimenti
GROUP BY TabMovimenti.NrViaggio;
che chiameremo, per semplicità: "QueryNrViaggi"; la quale restituirà le occorrenze dei numeri dei viaggi raggruppati, in modo da averli singolarmente
NrViaggio
180
181
Questa query verrà posta in relazione con la tabella originaria in modo da ottenere (con la DISTINCT) il numero di consegne
SELECT DISTINCT QueryNrViaggi.NrViaggio, TabMovimenti.Consegne
FROM TabMovimenti
INNER JOIN QueryNrViaggi ON TabMovimenti.NrViaggio = QueryNrViaggi.NrViaggio;
e la chiameremo "QuerySingoli" in modo da ottenere il numero di consegne (prese distintamente)
NrViaggio Consegne
180 2
181 3
A questo punto se si vuole il totale del numero di consegne (indipendentemente dal numero di viaggio) è sufficiente effettuare (in base alla query precedente) la loro somma:
SELECT Sum(QuerySingoli.Consegne) AS SommaDiConsegne
FROM QuerySingoli;
ottenendo:
SommaDiConsegne
5
Ti ho evidenziato i passaggi basici delle varie query che possono essere implementati sfruttando (se ne hai padronanza) il tutto in una singola query, che abbia l'annidamento relativo (attraverso sub-query con tabelle derivate) per ottenere in sequenza i vari step.