2016-05-25 13 views
-1

habe ich eine Tabelle, die wie jetztnur Rekordmaximalwert auswählen für mehrere Zeilen

Unit Rate DateEffected 
------------------------------------------- 
ALHA ILS  2014-03-02 00:00:00.000 
ALHA ILS  2014-08-02 00:00:00.000 
BUCK ILS  2013-02-14 00:00:00.000 
BUCK ILS  2014-03-02 00:00:00.000 
BUCK ILS  2014-08-02 00:00:00.000 
CASC ILD  2013-02-14 00:00:00.000 
CASC ILD  2014-03-02 00:00:00.000 
CASC ILD  2014-08-02 00:00:00.000 

Aufzeichnungen hat, möchte ich in Ergebnistabelle nur maximale Auswahl Stichtag Wert. was ist,

Unit Rate DateEffected 
------------------------------------------- 
ALHA ILS  2014-08-02 00:00:00.000 
BUCK ILS  2014-08-02 00:00:00.000 
CASC ILD  2014-08-02 00:00:00.000 
+0

Sie bitte Ihre Daten formatiert werden, so dass es leicht sein wird für uns zu verstehen. Geben Sie auch den Tabellennamen und den Spaltennamen an. – jelliaes

+0

Sehen Sie sich die Operatoren MAX und GROUP BY an. Sie sind genau das, wonach Sie suchen. –

Antwort

2

Hoffe das hilft.

SELECT 
Unit, 
Rate, 
MAX(DateEffected) AS MaxDateEffected 
FROM TableName 
GROUP BY Unit,Rate 
+0

Wenn ich das mit Join-Abfrage dann verwenden möchte? – damini

+0

Ich glaube nicht, dass du hier irgendjemanden mitmachen müsstest. – Sandesh

+0

Ich möchte es mit anderen Tabellen verwenden. – damini

2

Sie können ROW_NUMBER für diesen Einsatz:

SELECT Unit, Rate, DateEffected 
FROM (
    SELECT Unit, Rate, DateEffected, 
     ROW_NUMBER() OVER (PARTITION BY Unit 
          ORDER BY DateEffected DESC) AS rn 
FROM mytable) AS t 
WHERE t.rn = 1 
+0

Warum nicht einfache Gruppe? – sagi

+0

Das ist richtig (wie die andere Antwort). Beachten Sie jedoch, dass nur ein Datensatz zurückgegeben wird, wenn zwei Datensätze mit dem maximalen Datum vorhanden sind. Wenn dies nicht erforderlich ist, sollte 'DENSE_RANK()' oder 'RANK()' verwendet werden. – HoneyBadger

Verwandte Themen