2017-12-29 10 views
0

Dies könnte einfach sein, aber ich bin neu in SQL und konnte nicht finden, wie dies genau zu tun.SQL-Abfrage mit WHERE IN-Klausel

und ich habe folgende Tabelle:

Existing table in SQL

Meine Forderung ist folgende:

Ich brauche für jeden Dim, für jede Frequenz, ich brauche neuestes Datum & maximale Version des neuesten Datums . Zum Beispiel: Es wird eine Zeile für Dim 'A' geben & Häufigkeit 'Monatlich' mit ihrem neuesten Datum & die maximale Version des letzten Datums. und Es wird eine weitere Zeile für Dim 'A' geben & Häufigkeit 'Wöchentlich' mit ihrem neuesten Datum & die maximale Version des letzten Datums.

Kann mir bitte jemand helfen?

Ich habe versucht, folgende Abfrage verwenden, aber es nicht korrekten Werte Rückkehr:

SELECT Dim, Frequency, Date, Version 
       FROM sample_tbl 
       WHERE (Frequency, Date, 
         Version) IN ( 
select Frequency, max(Date), max(Version) 
from sample_tbl 
group by 1 
); 
+0

Bitte lesen Sie http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking-a-question/285557 und die akzeptierte Antwort –

+0

Ich benutze Postgres –

+0

Mögliches Duplikat von [SQL - Postgres - gibt den maximalen Wert für das späteste Datum zurück] (https://stackoverflow.com/questions/48023183/sql-postgres-return-maximum-value-for-latest (Datum) –

Antwort

1

ich Postgres, denke ich distinct on tut, was Sie wollen:

select distinct on (dim, frequency) s.* 
from sample_tbl s 
order by dim, frequency, date desc, version desc; 

Für jede dieser dim/frequency Kombination liefert einen Reihe. Diese Zeile ist die erste gefundene Zeile basierend auf der order by Klausel.

+0

Danke Gordon. Gibt es einen Weg, wo ich das neueste Datum für 'monatlich' und das späteste Datum für 'wöchentliche' Frequenzen bekommen kann und alle Reihen für Dim auswählen kann, wo Datum und Frequenz sind, was auch immer wir früher bekommen haben? –

+0

@ParikshitShinge. . . Stellen Sie eine andere Frage mit geeigneten Probendaten und gewünschten Ergebnissen. –