2017-07-20 6 views
0

Ich habe eine Tabelle mit Spalten mit den Namen 'Name', 'Produkt', 'Wert', 'Update-Datum'. Ich möchte eine SQL-Anweisung haben, die die eindeutigen Werte der Spalten 'Name', 'Produkt', 'Wert' auswählt, aber so, dass sie nach dem letzten bis spätestens 'Aktualisierungsdatum' geordnet sind.SQL Query SELECT DISTINCT WHERE VON

Wenn ich die Ausgabe einer solchen SQL-Select-Anweisung zurückgebe, könnte ich leicht die drei Namen oder die drei Produkte, drei Werte, die die neuesten Updates hatten, sagen. Gibt es eine SQL-Anweisung, die ich verwenden könnte?

Ich denke über eine separate SQL-Anweisung für jede der Spalten: 'Name', 'Produkt', 'Wert'. Und habe irgendwo eine ORDER BY-Anweisung. Irgendwelche Gedanken?

+0

** [Bearbeiten] ** Ihre Frage ein und fügen Sie einige Beispieldaten und die erwartete Ausgabe auf der Grundlage dieser Daten. [** Formatierter Text **] (http://stackoverflow.com/help/formatting) bitte, [keine Screenshots] (http://meta.stackoverflow.com/questions/285551/why-may-i-not -upload-images-of-code-auf-so-wenn-eine Frage zu stellen/285557 # 285557). Veröffentlichen Sie keinen Code oder zusätzliche Informationen in Kommentaren –

+0

Welche [DBMS] (https://en.wikipedia.org/wiki/Database) verwenden Sie? Postgres? Orakel? DB2? Feuervogel? –

Antwort

2

Sie müssen ein Aggregat wechseln das maximale Datum zu erhalten, für die Sortierung:

select Name, Product, Value 
from tab 
group by Name, Product, Value 
order by MAX(UpdateDate) desc 
+0

Danke !! Nur um zu verdeutlichen, würde diese Abfrage die eindeutigen Einträge erhalten, die aus den Spalten Name, Produkt, Wert bestehen, die das größte UpdateDate haben. Wenn ich möchte, dass der eindeutige Eintrag nicht aus den drei Spalten Name, Produkt, Wert, sondern nur Name allein oder Produkt allein oder Wert allein besteht, müsste ich separate Anweisungen ausführen, oder? Wie in: Wählen Sie Name aus der Registerkartengruppe nach Name sortiert nach MAX (UpdateDate) desc, wählen Sie Produkt aus der Registerkartengruppe nach Produkt sortiert nach MAX (UpdateDate) desc, .... usw. – Diana

+1

@Diana: Ja, es gibt das eindeutige ' Name, Produkt, Wert '* Kombinationen * und sortiert nach dem letzten' UpdateDatum '. Wenn Sie das für jede einzelne Spalte möchten, benötigen Sie drei Select plus 'UNION ALL'. – dnoeth