Query con Group By

di il
1 risposte

Query con Group By

Ciao a tutti,

Avrei un problema con una query, sto studiando un pò da autodidatta SQl Oracle.

Io dovrei fare una query che prenda l'ultimo stato ( quindi controllo la data), raggruppato per una colonna chiamata mat_calc.

mat_calc | STATO | DATA
1 | NEW | 25/03/2016
1 | DONE |25/01/2016
2 |PROC |25/04/2016
2 |PROC |25/07/2016
2 |DONE |25/09/2016
3 |NEW |25/01/2016
3 |PROC |25/06/2016
3 |DONE |25/02/2016
3 |OK |25/12/2016
4 |OK |25/03/2016

Quindi mi dovrebbe restuire

il mat_cal con il relativo stato

1 | NEW
2 | DONE
3 | OK
4 | OK

La query che ho scritto è
select mat_cal AS mat_cal , STATO AS STATO, MAX(DATA) AS DATA
from CALC
group by mat_cal ;
Mi dà problemi sul group id perchè a quanto pare STATO non lo uso.
Ma come dovrei fare? Se aggiungo stato nel group id me li raggruppa anche via stato e non va bene

GRazie mille

1 Risposte

  • Re: Query con Group By

    Non so se hai già risolto, credo di si visto che sono passati più di sette mesi ma penso che sia comunque utile dare una risposta così da aiutare altri che magari incapperanno nel tuo stesso problema.

    Io farei così.

    select
    mat_calc,
    stato
    from
    (SELECT
    mat_calc
    stato
    ROW_NUMBER() OVER(PARTITION BY mat_calc ORDER BY data DESC) NR
    FROM tabella da cui prendere i record
    )
    WHERE NR = 1

    la query l'ho scritta al volo ma credo dovrebbe funzionare.
Devi accedere o registrarti per scrivere nel forum
1 risposte