+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Problema con la Clausola GROUP BY

  1. #1
    dan1987 non è in linea Scolaretto
    Salve ho un problema con una query, ho una select con 2 campi selezionati e una group by con due campi, però un dei 2 campi della select non deve essere nella clausola di raggruppamento, come si fa ad escluderla selezionandola comunque nella select???

  2. #2
    L'avatar di Morenz
    Morenz non è in linea Scribacchino
    Possiamo vedere la query?

    ... non capisco la tua espressione "non dovrebbe essere nel group by"... se hai funzioni di aggregazione, tutti i campi selezionati che non sono aggregati devono finire nella group by
    (se non ricordo male)...

    Ciao,
    Morenz
    ℹ️ Leggi di più su Morenz ...

  3. #3
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    però un dei 2 campi della select non deve essere nella clausola di raggruppamento
    Come ben sai la clausola GROUP BY riunisce in un unico record di output i record di input che contengono gli stessi valori nei campi indicati. Ora mettiti nei panni del tuo interprete SQL: cosa scriveresti nel campo escluso del record risultante? Un bel problema, no?

    Comunque, come dice Morenz, come minimo posta la query.

  4. #4
    dan1987 non è in linea Scolaretto
    La query è:

    SELECT CODAGENTE, CodiceCliente FROM StoricoFatturato
    GROUP BY CODAGENTE, CodiceCliente

    a me serve raggruppare solo per CODAGENTE ma ho anche bisogno del valore di CodiceCliente per una query successiva, ho provato a mettere la clausola DISTINCT e a togliere la GROUP BY ma mi da errore in un'altra query collegata dicendomi che serve per forza la GROUP BY, quindi esiste un'altro modo oltre alla DISTINCT???

  5. #5
    L'avatar di luciano.net
    luciano.net non è in linea Scolaretto
    Da come sembra, hai Agenti e Clienti, un Agente può avere più clienti e un cliente appartiene a un solo agente.
    Se è così, che senso ha raggrupparli per agente se ti serve anche il codice cliente?
    Comunque sia, otterrai sempre tutti i record.

    Premesso che per aiutarti servirebbe conoscere la struttura della tabella/vista StoricoFatturato, considera che la clausola group by serve per ottenere, appunto, valori raggruppati.
    Ad esempio puoi contare i clienti di ciascun agente:
    SELECT COUNT(CodiceCliente) AS NumeroClienti, CODAGENTE FROM StoricoFatturato
    GROUP BY CODAGENTE
    
    Sarebbe meglio se spiegassi cosa vuoi ottenere.


    Luciano

  6. #6
    dan1987 non è in linea Scolaretto
    Devo fare un Inner Join tra fatturato e agenti, tramite CodiceCliente, quindi devo leggere il codiceCliente dalla select per poi metterlo nella join, ma non devo raggruppare per codiceCliente ma solo per CODAGENTE perchè devo vedere un'unica riga di riepilogo e non tutte le righe di dettaglio di fatturato.

    Es.

    Se raggruppo per tutti e due i campi viene circa così:

    Agente1 C0001 10€
    Agente1 C0002 20€
    Agente1 C0003 30€

    Se raggruppo per CODAGENTE solamente mi verrebbe così:

    Agente1 60€

    Ed è così che è la maniera corretta ma come ci posso riuscire???

  7. #7
    L'avatar di Morenz
    Morenz non è in linea Scribacchino
    SELECT Agente, Sum(Fatturato) as FatturatoTot
    FROM tabella
    GROUP BY Agente

    Prova...

    Ciao,
    Morenz
    ℹ️ Leggi di più su Morenz ...

  8. #8
    dan1987 non è in linea Scolaretto
    Questo va bene, però dopo di questo la procedura deve prendere il codiceCliente per fare un Join con gli ordini del cliente, ma a quel punto dovrei mettere CodiceCliente nella GROUP BY.

  9. #9
    L'avatar di Morenz
    Morenz non è in linea Scribacchino
    I criteri del join non c'entrano col group by...

    SELECT Agente, Sum(fatturato) as totfatturato
    FROM Tabella1 INNER JOIN TABELLA 2 ON Tabella1.IDCliente = Tabella2.IDCliente
    GROUP BY Agente
    
    ti calza meglio?

    Ciao,
    Morenz
    ℹ️ Leggi di più su Morenz ...

  10. #10
    L'avatar di gibra
    gibra non è in linea Very Important Person
    Quote Originariamente inviato da dan1987 Visualizza il messaggio
    La query è:

    SELECT CODAGENTE, CodiceCliente FROM StoricoFatturato
    GROUP BY CODAGENTE, CodiceCliente

    a me serve raggruppare solo per CODAGENTE ma ho anche bisogno del valore di CodiceCliente per una query successiva, ho provato a mettere la clausola DISTINCT e a togliere la GROUP BY ma mi da errore in un'altra query collegata dicendomi che serve per forza la GROUP BY, quindi esiste un'altro modo oltre alla DISTINCT???
    un DB di esempio aiuterebbe a capire la struttura dei dati.

    Ciao
    Ultima modifica di gibra; 15-04-2008 18:48 
    ℹ️ Leggi di più su gibra ...

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Recordset clausola WHERE
    Da Frankq_it nel forum Visual Basic 6
    Risposte: 0
    Ultimo Post: 09-08-2020, 14:24
  2. Query con clausola AND
    Da paoloet nel forum Microsoft Access
    Risposte: 20
    Ultimo Post: 14-05-2019, 08:58
  3. Quesito su clausola GROUP BY
    Da rossomike1966 nel forum Microsoft Access
    Risposte: 1
    Ultimo Post: 07-03-2016, 21:07
  4. Problema Group By Format
    Da 1sirena nel forum Microsoft Word
    Risposte: 3
    Ultimo Post: 07-06-2010, 18:33
  5. Clausola Like
    Da sanfra nel forum PHP
    Risposte: 7
    Ultimo Post: 06-08-2007, 10:23