Je dispose de la base de données et de la requête suivantes. La requête prend deux paramètres: la colonne de tri et la direction. Cependant, je dois ajouter un tri personnalisé à la requête (basé sur le Fuji devrait venir en premier et Gala en second lieu, etc.). Cette partie fonctionne également mais elle crée du code dupliqué dans ma requête. Pour cette raison, je suis certain que les gens ne me laisseront pas vérifier cela. Ma question est la suivante: y a-t-il un moyen de ne pas reproduire la déclaration CASE?Ordre de tri personnalisé - Comment ne pas dupliquer l'instruction Case
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
Merci!