Aşağıdaki Db ve sorgularım var. Sorgu iki parametre alır: sıralama sütunu ve yön. Ancak, sorguya özel sıralama eklemem gerekiyor (Fuji'ye göre ilk ve Gala ikinci, vb.). Bu kısım da çalışır, ancak sorgumda çoğaltılmış kod oluşturur. Bundan dolayı, insanların bunu kontrol etmeme izin vermeyeceğine eminim. Bu yüzden sorum şu: CASE bildirimini çoğaltmanın bir yolu var mı?Özel Sıralama Sırası - Vaka ifadesini nasıl kopyalayamazım
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
Teşekkürler!