Query SQL

di il
1 risposte

Query SQL

Salve a tutti ho un problema con una query.

la tabella su cui vorrei effettuare la query contiene i seguenti dati:

Id.......IdModello.........Prezzo...........Data............Provenienza
1...........45............34.0000.........2005-05-31............0
2...........24............67.0000.........2005-05-31............1
3...........24............45.0000.........2005-06-01............1
4...........24............89.0000.........2005-06-01............2
5...........24...........100.0000.........2005-06-05............1

vorrei selezionare il prezzo relativo alla data maggiore per ogni provenienza, cioè la mia query dovrebbe restituirmi:

Id.......IdModello.......Prezzo..............Data.........Provenienza
1..........45............34.0000.........2005-05-31...........0
4..........24............89.0000.........2005-06-01...........2
5..........24...........100.0000.........2005-06-05...........1

Io l'ho impoastata in questo modo:

SELECT StoricoPrezzi.Prezzo, StoricoPrezzi.Provenienza, StoricoPrezzi.IdModello, StoricoPrezzi.Id, Max( StoricoPrezzi.Data ) AS MaxOfData
FROM StoricoPrezzi
GROUP BY StoricoPrezzi.Provenienza, StoricoPrezzi.IdModello
ORDER BY StoricoPrezzi.Id

ma il risutato è il seguente:

Id.......IdModello.........Prezzo..........Data............Provenienza
1..........45.............34.0000........2005-05-31..........0
2..........24.............67.0000........2005-06-05..........1
4..........24.............89.0000........2005-06-01..........2


come potete notare per la seconda riga mi ha selezionato l'ultima data (come volevo) ma il prezzo e la id è riferita alla prima data immessa.

Spero che qualcuno mi possa aiutare, grazie Zaic.

*zaic*

1 Risposte

  • Re: Query SQL

    Vai in join su una sotto-query fatta sulla stessa tabella:


    SELECT a.Prezzo, a.Provenienza, a.IdModello, a.Id, a.Data
    FROM StoricoPrezzi a, (select provenienza, max(Data) AS MaxOfData from StoricoPrezzi group by provenienza) b
    where a.data=b.MaxOfData
    and a.provenienza=b.provenienza

    La query è + lenta ma dovrebbe funzionare
Devi accedere o registrarti per scrivere nel forum
1 risposte