Visualizzazione dei risultati da 1 a 10 su 17

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    20

    [SQL Server] Query per estrarre valore da un campo non presente in un Group By

    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
    Ultima modifica di csar1992; 16-04-2014 a 15:50

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.