Ich verwende Tabellenwert-Funktion in SQL Server, um Daten entweder mit Bindungen oder ohne unter bestimmten Bedingungen zurückgegeben werden.Tabellenwert-Funktion - Duplikat-Tabelle-Deklaration
Jetzt funktioniert die Lösung gut, aber ich mag nicht die Tatsache, dass ich die Tabelle zweimal deklarieren muss - gibt es Workarloud? Ich könnte wahrscheinlich anstelle in @tmp
Tabelle Verwendung @ReturnTable
einfügen, aber diese Daten müssten gelöscht werden, sobald select top 1
am Ende der Funktion abgefragt wird.
RETURNS @ReturnTable TABLE
(
idTable INT,
idOther INT,
name VARCHAR(30)
)
AS
BEGIN
DECLARE @tmp TABLE
(
idTable INT,
idOther INT,
name VARCHAR(30)
)
INSERT INTO @tmp
SELECT idTable,
idOther,
name
FROM SomeTable
IF (some condition)
BEGIN
INSERT INTO @ReturnTable
SELECT TOP 1 WITH TIES idTable,
idOther,
name
FROM @tmp
ORDER BY (some ordering)
END;
ELSE
BEGIN
INSERT INTO @ReturnTable
SELECT TOP 1 idTable,
idOther,
name
FROM @tmp
ORDER BY (some other ordering)
END;
RETURN;
END;
'TOP' Verwendung erreicht werden kann, ohne' Auftrag By' nicht viel Sinn machen –
Es ist ein Auftrag, lassen Sie mich das korrigieren. – Neutrino