Benutzer mit den meisten Antworten
größter wert aus mehreren Spalten ermitteln ?

Frage
-
Hallo,
folgendes Problem, bei dem ich etwas Hilfe bräuchte.
Durch einen Join kommt es dazu, das ich mehrere Datums-Spalten zur Verfügung habe. Nun möchte ich in einem anschließenden Select (view) nur noch eine Datum Spalte haben und zwar gefüllt mit dem höchsten Wert dieser 3 Spalten.
Also nicht Max(Spalte1) sonder Max aus Spalte1 Spalte2 und Spalte3 (und das für jeden Datensatz)
Danke Gruß Andre
Antworten
-
Hallo Andre,
das kannst Du über einen CASE Ausdruck erledigen:
SELECT ..., CASE WHEN Datum1 > Datum2 AND Datum1 > Datum3 THEN Datum1 WHEN Datum2 > Datum1 AND Datum2 > Datum3 THEN Datum2 ELSE Datum3 END AS MaxDatum FROM ...
Gruß Elmar- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 30. Juni 2010 14:27
-
Danke an Euch beiden.
Ich hab es inzwischen mit einem Case gelöst. Hatte irgendwie die Hoffnung, das das Eleganter geht.
Gruß Andre
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 30. Juni 2010 14:27
Alle Antworten
-
Hallo Andre,
das kannst Du über einen CASE Ausdruck erledigen:
SELECT ..., CASE WHEN Datum1 > Datum2 AND Datum1 > Datum3 THEN Datum1 WHEN Datum2 > Datum1 AND Datum2 > Datum3 THEN Datum2 ELSE Datum3 END AS MaxDatum FROM ...
Gruß Elmar- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 30. Juni 2010 14:27
-
Eine weitere Möglichkeit, wenn vielleicht auch nicht so ganz performant:
create table test (ID int identity(1,1),Datum1 datetime null, datum2 datetime null, datum3 datetime null)
insert into test
values ('20100601','20100602','20100603'),
('20100607','20100602','20100603'),
('20100604','20100606','20100605')create function fnctMaxDatum (@ID int)
returns datetime
as
begin
declare @maxdat datetime
select @maxdat = MAX(datum) from (
select id, Feld, Datum from (select ID, Datum1, Datum2, Datum3 from test where ID = @id) p
unpivot (Datum for Feld in (Datum1, Datum2, Datum3) )as unpvt) x
return @maxdat
endselect *, dbo.fnctMaxDatum(ID) as maxdat from test
-
Danke an Euch beiden.
Ich hab es inzwischen mit einem Case gelöst. Hatte irgendwie die Hoffnung, das das Eleganter geht.
Gruß Andre
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 30. Juni 2010 14:27