38 Stimmen

Auswahl des jüngsten Datums zwischen zwei Spalten

Wenn ich eine Tabelle habe, die (neben anderen Spalten) zwei DATETIME-Spalten hat, wie würde ich die am aktuellsten Datum aus diesen beiden Spalten.

Beispiel:

ID     Date1     Date2

1      1/1/2008   2/1/2008

2      2/1/2008   1/1/2008

3      1/10/2008  1/10/2008

Wenn ich möchte, dass meine Ergebnisse wie folgt aussehen

ID     MostRecentDate

1      2/1/2008

2      2/1/2008

3      1/10/2008

Gibt es eine einfache Möglichkeit, dies zu tun, die ich offensichtlich übersehe? Ich weiß, ich kann Unterabfragen und Fall-Anweisungen tun oder sogar eine Funktion in Sql-Server schreiben, um es zu behandeln, aber ich hatte es in meinem Kopf, dass es eine max-Compare-Typ-Funktion bereits in, die ich gerade vergessen.

1voto

syb Punkte 359
select max(d) ChangeDate
from (values(@d), (@d2)) as t(d)

0voto

Michael Punkte 7019

Dieses Thema hat mehrere Lösungen. Wenn Sie mehr als 2 Daten zu vergleichen haben, könnte "unpivot" dem Schreiben einer Reihe von Fallanweisungen vorzuziehen sein. Das Folgende ist unverhohlen geklaut aus Niikola :

select id, max(dDate) MostRecentDate
  from YourTable
    unpivot (dDate for nDate in (Date1, Date2, Date3)) as u
  group by id 

Dann können Sie order by dDate falls das hilfreich ist.

0voto

Michal Punkte 19
select ID,(select max(d) from (select Date1 d uninon select Date2 d) as t) as MaxDate
from MyTable

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X