Ich habe folgende Db und Abfrage. Die Abfrage benötigt zwei Parameter: die Sortierspalte und die Richtung. Allerdings muss ich benutzerdefinierte auf die Abfrage Sortierung hinzufügen (basierend auf dem Fuji sollte zweite erste und Gala kommen, etc.). Dieser Teil funktioniert auch, aber er erzeugt doppelten Code in meiner Abfrage. Dieser Grund, ich bin ziemlich sicher, dass die Leute lassen Sie mich nicht, in Also meine Frage ist:. Ist es eine Möglichkeit, nicht die CASE-Anweisung zu duplizieren?Benutzerdefinierte Sortierung - Wie nicht die Case-Anweisung duplizieren
CREATE TABLE Fruits (
[type] nvarchar(250),
[variety] nvarchar(250),
[price] money
)
GO
INSERT INTO Fruits VALUES ('Apple', 'Gala', 2.79)
INSERT INTO Fruits VALUES ('Apple', 'Fuji', 0.24)
INSERT INTO Fruits VALUES ('Apple', 'Limbertwig', 2.87)
INSERT INTO Fruits VALUES ('Orange', 'Valencia', 3.59)
INSERT INTO Fruits VALUES ('Pear', 'Bradford', 6.05)
DECLARE @sortColumnName nvarchar(MAX) = 'Variety'
DECLARE @sortDirection nvarchar(MAX) = 'ASC'
SELECT ROW_NUMBER() OVER (ORDER BY
CASE WHEN @sortColumnName = 'Variety' AND @sortDirection = 'ASC'
THEN
CASE f.Variety
WHEN 'Fuji' THEN 1
WHEN 'Gala' THEN 2
ELSE 3
END
END ASC,
CASE WHEN @sortColumnName = 'Variety' AND @sortDirection = 'DESC'
THEN
CASE f.Variety
WHEN 'Fuji' THEN 1
WHEN 'Gala' THEN 2
ELSE 3
END
END DESC), *
FROM Fruits f
Vielen Dank!