Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di arw
    Registrato dal
    Dec 2007
    Messaggi
    149

    estrazione con group by

    Ciao a tutti!
    ho un problemino con il group by, ho una query che senza il group by mi estrare il risultato coretto se io imposto il group by invece , no.....

    la select ha parecchi campi perche sarebbe parte di una UNION:
    select CO_CM_m.CMCODCOM as CodCOMMESSAtr, co_commesse.COMMDESCRIZIONE as DescrCOMMESSAtr,
    cli.COTITLE as CLIENTE, cc_statiopp.DESCRIZIONEST as StatoCommessa,
    CAST(co_commesse.DATAINIZIO AS date) as dInizioComm, CAST(co_commesse.DATAFINE AS date) as dFineComm,
    CO_TIPCOM.DESTIP as TipoCommessa, acc.COTITLE as OpportLead,
    pm.COTITLE as DeliveryLead, cc_livconf.DESCRIZIONELIV as LivelloConfidenza,
    ba_busiunit.BUCODICE as BU, co_commesse.CENTRORICAVO,
    CO_TPLCOM.DESTPL as TIPOLOGSERVIZIO, co_aoffering.DESOFF as OFFERING,
    '' as dataInizioTR, '' as dataFineTR,
    '0' as TRCODRISORSA,'' as TRRISORSA,
    '' as DESCRQUALIFICA,'' as DATAFINERAPPORTO,
    '0' as TRCODVOCEBUDGET, '' as TRVOCEBUDGET,
    '0' as TRCODARTICOLO, '' as TRARTICOLO,
    co_drollcostprofris.RCPROFILO as PROFILO, hr_profili.DESCRPROFILO as DESCRPROFILO,
    CAST(co_drollcostprofris.RCCOSUNIT AS Decimal(9,2)) as CostoProfiloTR, '0' as TotCostoProfilo,
    '0' as ToTGG_PROGRESSIVO, '0' as COSTOannoPianificato,
    '0' as TotaleRM, '0' as RicavoAnno,
    '0' as COSTO_CM_EROGATO,'0' as importoGM,
    '0' as PercentualeGM ,'0' as Ricavo_Maturato,
    '0' as COSTO_Maturato, '0' as GM_Maturato,
    co_arollcost.RCCM as codCM,co_drollcostprofris.RCANN,
    CO_CM_m.CMSEDE,ba_offices.OFDESCRI,
    co_arollcost.RCREV as NumREV,CO_CM_m.CMAZI,
    CAST (co_drollcostprofris.RCGEN AS Decimal(9,2))as genn, CAST (co_drollcostprofris.RCFEB AS Decimal(9,2))as feb,
    CAST (co_drollcostprofris.RCMAR AS Decimal(9,2))as mar, CAST (co_drollcostprofris.RCAPR AS Decimal(9,2))as apr,
    CAST (co_drollcostprofris.RCMAG AS Decimal(9,2))as magg, CAST (co_drollcostprofris.RCGIU AS Decimal(9,2))as giu,
    CAST (co_drollcostprofris.RCLUG AS Decimal(9,2))as lug, CAST (co_drollcostprofris.RCAGO AS Decimal(9,2))as ago,
    CAST (co_drollcostprofris.RCSET AS Decimal(9,2))as sett, CAST (co_drollcostprofris.RCOTT AS Decimal(9,2))as ott,
    CAST (co_drollcostprofris.RCNOV AS Decimal(9,2))as nov, CAST (co_drollcostprofris.RCDIC AS Decimal(9,2))as dic,
    CAST (co_drollcostprofris.RCQTARIGA AS Decimal(9,2))as totANNORigaCM
    from CO_CM_m

    la group by mi richiede tutti i campi tranne quelli a ZERO o vuoti.

    cosa posso controllare?
    ho provato a rifare la zero la query ri-ragionandola, ma tutto funziona se non cè il group by, come l'inserisco non mi estrae piu tutto corretto.



    Grazie...

  2. #2
    Ciao,
    ma perchè vuoi utilizzare la "GROUP BY"??
    Per tua info:
    - nella group by devi inserire solo le colonne dimensione (valori su cui non devi fare funzioni di aggregazione, somma, average, ecc)
    - sui restanti campi non dimensione (misure), dovresti applicare nella parte select, le funzioni da aggregazione sum(), avg(), ecc
    - il comando group by va a schiacciare i record sui campi dimensione e ti aggrega i campi misura. Es:

    tabella TB_VENDITE
    codice:
    ANNO	MESE	CLIENTE	VENDITE
    2013	1	A	10
    2013	2	A	15
    2013	2	C	25
    2013	1	B	10
    SELECT ANNO, MESE, SUM(VENDITE)
    FROM TB_VENDITE
    GROUP BY ANNO, MESE

    il risultato è
    codice:
    ANNO	MESE	VENDITE
    2013	1	20
    2013	2	40
    Spero di aver chiarito alcuni dubbi

    Ciao
    Mik

  3. #3
    Utente di HTML.it L'avatar di arw
    Registrato dal
    Dec 2007
    Messaggi
    149
    Grazie... ci sto ragionando,
    però, io in questa query puntuale non avendo funzioni di aggragazione non metto la group by ed ok, ma poi quando incorporo questa nella UNION, lì ho group by perchè nelle altre query ho delle SUM() per cui sono obbligata a usare la group by. Ma cio che mi estrae è sbagliato.

    Non so come uscirne...
    :/

  4. #4
    Grazie... ci sto ragionando,
    però, io in questa query puntuale non avendo funzioni di aggragazione non metto la group by ed ok, ma poi quando incorporo questa nella UNION, lì ho group by perchè nelle altre query ho delle SUM() per cui sono obbligata a usare la group by. Ma cio che mi estrae è sbagliato.

    Non so come uscirne...
    Perchè dovresti utilizzare la group by quando la unisci tramite UNION con altre query??
    Non è indispensabile a meno che ti restituisce un errore...

    questa query ad esempio funziona brillantemente:

    SELECT MESE, SUM(VENDUTO) FROM VENDITE GROUP BY MESE
    UNION
    SELECT MESE, QUANTITA FROM VENDITE

    l'unico vincolo è che i campi devono avere lo stesso formato --> SUM(VENDUTO) e QUANTITA sono entrambi number

    Facci sapere

    Ciao
    Mik

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.