Raggruppamenti in sql

di il
2 risposte

Raggruppamenti in sql

Ciao a tutti,
ho una tabella formata dai seguenti campi:
id_persona
data_inizio
data_fine
attivita

I record possono contenere la stessa id_persona e data inizio/fine e attivita anche differenti.
Esempio:
id persona 1
data inizio 22/08/2013
data fine 29/08/2013
attivita x

id persona 1
data inizio 30/08/2013
data fine 02/09/2013
attivita y

id persona 1
data inizio 10/09/2013
data fine 20/09/2013
attivita x

Quindi ho per la stessa id_persona n attività con le varie date.
Ho necessità di trovare per ogni id persona, quale attività ha la data inizio maggiore.
Il risultato dell'esempio dovrebbe mostrare solo una riga con
id persona 1
data inizio 10/09/2013
data fine 20/09/2013
attivita x

Secondo voi come posso procedere?
Grazie

2 Risposte

  • Re: Raggruppamenti in sql

    Puoi provare un

    select max(data_inizio) as DataInizio from tabella group by Id_Persona
  • Re: Raggruppamenti in sql

    Per completezza, visto che desideri estrarre tutto il record e non solo la data massima per ogni id_persona, l'interrogazione che potresti usare è la seguente:

    SELECT id_persona,data_inizio,data_fine,attivita
    FROM Tabella TB
    WHERE (id_persona,data_inizio)=(SELECT id_persona,MAX(data_inizio) FROM Tabella WHERE id_persona=TB.id_persona GROUP BY id_persona)

    Tieni presente che se una certa Id_persona avesse 2 o più record con la medesima data_inizio corrispondente alla data massima otterresti più di un record.
Devi accedere o registrarti per scrivere nel forum
2 risposte