Tôi có Db và truy vấn sau. Truy vấn nhận hai tham số: cột sắp xếp và hướng. Tuy nhiên, tôi phải thêm sắp xếp tùy chỉnh vào truy vấn (dựa trên Fuji nên đến trước và Gala thứ hai, v.v.). Phần này cũng làm việc nhưng nó tạo mã trùng lặp trong truy vấn của tôi. Bởi vì điều đó, tôi khá chắc chắn mọi người sẽ không cho phép tôi kiểm tra điều này. Vì vậy, câu hỏi của tôi là: là có một cách để không lặp lại tuyên bố CASE?Thứ tự sắp xếp tùy chỉnh - Cách không sao chép câu lệnh 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
Cảm ơn!