Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Câu lệnh CASE cho thứ tự theo mệnh đề có nhiều cột và sắp xếp theo mô tả / Asc

Bạn có thể viết nhiều trường hợp, ngay cả khi tất cả chúng đều có cùng một điều kiện.

ORDER BY 
    CASE @OrderByColumn WHEN 1 THEN Forename END DESC, 
    CASE @OrderByColumn WHEN 1 THEN Date END, 
    CASE @OrderByColumn WHEN 1 THEN Location END, 
    CASE @OrderByColumn WHEN 2 THEN Surname END ASC 

Trên thực tế, bạn không chỉ định một cột để sắp xếp, mà là một biểu thức.

Câu lệnh case trả về null nếu điều kiện không được đáp ứng, vì vậy thực tế nó có nghĩa là:

CASE @OrderByColumn WHEN 1 THEN Forename ELSE NULL END

Vì vậy, nếu @OrderByColumn không phải là 1 thì câu lệnh trả về luôn là NULL. Nhân tiện, điều đó không loại trừ nó khỏi việc sắp xếp, nhưng nó đặt tất cả các hàng đó lại với nhau trong kết quả, làm cho 'SurName' trở thành phân loại quyết định trong nhóm hàng đó.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách sao chép cơ sở dữ liệu máy chủ sql từ máy chủ này sang máy chủ khác mà không cần bất kỳ bản sao lưu nào

  2. Chuyển đổi ‘datetime2’ thành ‘date’ trong SQL Server (Ví dụ T-SQL)

  3. Khắc phục “Ít nhất một trong các đối số đối với COALESCE phải là một biểu thức không phải là hằng số NULL” trong SQL Server

  4. Hùng biện với bảng được khai báo để sử dụng trong truy vấn

  5. Cách hoạt động của hàm SOUNDEX () SQL Server