Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    282

    [SQL Server] Errore in query group by

    Ciao a tutti,
    non riesco a risolvere un errore in una query con raggruppamento. Questa query funzionava in Visual Fox Pro ed ora che la stò riportando in SQL Server mi dice:

    "La colonna C6 non è valida nell'elenco di selezione perchè non è inclusa in una forma di aggregazione nè nella clausola GROUP BY"

    Il problema è che con questa query devo estrarre anche altri campi (es: C6 oltre a quelli del raggruppamento)

    Questa è la query che ho usato:
    SELECT C1 AS Expr1, C2 AS Expr2, C3 AS Expr3, C4 AS Expr4, C5 AS Expr5, C6 AS Expr6
    FROM scadenze
    GROUP BY C1, C2, C3, C4
    HAVING (SUM(C5) > 200)

    Mi date una mano?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    Dacci qualche dettaglio in più; che tipo di dato ha C6 ? cosa contiene ?

  3. #3
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Scusate ho postato per errore

    Non avevo visto la risposta precedente di Comas17

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    282
    C6 e' un campo char 20 ma sono diversi i campi della tabella che dovrei estrarre.
    In passato query del genere ne ho fatte...
    Select campi.... Sum su quello che mi serve Group sui soli campi che mi interessa raggruppare

    Questo mi consente di estrarre un solo record da una tabella in cui ci sono più righe con la stessa chiave (secondaria) sommandone un valore

  5. #5
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Un esempio funzionante potrebbe essere questo:
    codice:
    SELECT 
    
    C1 AS Expr1, 
    C2 AS Expr2, 
    C3 AS Expr3, 
    C4 AS Expr4, 
    SUM(C5) AS Expr5, 
    C6 AS Expr6
    
    FROM  dbo.scadenze
    
    GROUP BY C1, C2, C3, C4, C6
    
    HAVING (SUM(C5) > 200)

    Ogni campo ha 3 possibilita:
    __ Raggrupparlo
    __ Aggregarlo ( Sum, Count, Max, Ecc ... )
    __ Non citarlo nella query



    Saluti

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    282
    Pero' facendo cosi' mi sembra che raggruppa i record anche sul campo C6 il che significa che mi restituisce più volte lo stesso record in quanto la chiave e' formata solo da C1,C2,C3,C4
    Penso che sia qualche limitazione di SQL Server, deve essere aggirabile, ma non so come....

  7. #7
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    OK, ma cosa contiene ?
    Cioè se lo raggruppi (per altri campi) e quindi ne andrai ad estrarre un solo valore, quale valore potrebbe andarti bene ?
    Puoi usare una funzione di aggregazione (tipo max o min) anche con stringhe
    Prova a farci un esempio di dati "veri" così capiamo cosa ne dovrebbe uscire

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    282
    Originariamente inviato da comas17
    .....
    Puoi usare una funzione di aggregazione (tipo max o min) anche con stringhe
    ...
    Ecco la soluzione! Gli altri campi che mi servono basta che li dichiaro usando una funzione di aggregazione.

    Grazie comas

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.