Hallo zusammen, ich habe hier eine Tabelle mit mehreren Datumspalten. Ich möchte nun für jede Zeile ) den jeweilig niedrigsten Datumswert aus 3 Spalten ermitteln und als neues Feld ausgeben.
SELECT
CASE WHEN Datum_1 <= Datum_2 AND Datum_1 <= Datum_3 THEN Datum_1
WHEN Datum_2 <= Datum_1 AND Datum_2 <= Datum_3 THEN Datum_2
ELSE Datum_3
END AS MinDatum
FROM MyTable
Du kannst den Vergleich auch in eine Funktion auslagern:
CREATE FUNCTION LeastDate (@d1 datetime, @d2 datetime, @d3 datetime)
RETURNS datetime
AS
BEGIN
DECLARE @least datetime
IF @d1 is null or @d2 is null or @d3 is null
SET @least = null
ELSE IF @d1 < @d2 and @d1 < @d3
SET @least = @d1
ELSE IF @d2 < @d1 and @d2 < @d3
SET @least = @d2
ELSE
SET @least = @d3
RETURN @least
END;
GO
SELECT LeastDate (Datum_1, Datum_2, Datum_3) AS MinDatum
FROM MyTable
Kommt davon, wenn man die Überschrift schlampig liest.
In SQL Server (hatte nur mal vor über 15 Jahren damit zu tun), gibt es witklich keine äquivalente Funktion? (bin ich froh, mit Oracle zu arbeiten )