Ciao, forse l'argomento è già stato trattato, però la mia necessità è un po' più specifica. Allora, io ho una tabella contenente le righe di vari ordini. La struttura è più o meno così:
Riga |
Codice |
Quantita |
1 |
ABBB |
2 |
2 |
ACCC |
5 |
3 |
ACCC-SUFFIX |
4 |
La tabella si chiama TOD.
Il numero dell'ordine preso in esame è 100.
Il risultato voluto è questo:
Riga |
Codice |
Quantita |
1 |
ABBB |
2 |
2 |
ACCC |
9 |
Fondamentalmente vorrei:
1) le righe, i codici e le quantità ordinate, tenendo però in conto che occorre fare la somma delle quantità dei codici che, tolto il suffisso SUFFIX, risultano uguali (in effetti è lo stesso codice; il suffisso è stato un escamotage per altri motivi). E, in ques'ultimo caso, come numero di riga va preso quello del codice originale senza suffisso.
Allora, se non mi servisse il numero di riga farei questa query:
codice:
SELECT replace(Codice,'-SUFFIX','') as Codice, SUM(Quantita) as Quantita FROM tod WHERE NumeroOrdine = 100 AND Quantità > 0 GROUP BY replace(Codice,'-SUFFIX','')
però il numero di riga mi serve. Il problema è che il campo RIGA non è presente nel GROUP BY e la select mi andrebbe in errore. Per farla funzionare dovrei mettere il campo riga in una funzione di aggregazione (tipo MIN, MAX, AVG), in questo modo:
codice:
SELECT MIN(Riga) as Riga, replace(Codice,'-SUFFIX','') as Codice, SUM(Quantita) as Quantita FROM tod WHERE NumeroOrdine = 100 AND Quantità > 0 GROUP BY replace(Codice,'-SUFFIX','')
Il problema è che non posso usare sempre MAX o MIN perché non so in partenza se il codice senza suffisso si trova prima o dopo di quello con suffisso. Nell'esempio di sopra funzionerebbe solo se il codice ACCC si trovasse sempre prima del codice ACCC-SUFFIX, però non è sempre così.
Insomma non so come generare una query che vada bene in tutti i casi.
Sapreste aiutarmi per favore?
Grazie