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

Câu lệnh CASE WHEN cho mệnh đề ORDER BY

CASE là một biểu thức - nó trả về một đơn giá trị vô hướng (mỗi hàng). Nó không thể trả về một phần phức tạp của cây phân tích cú pháp của một thứ khác, chẳng hạn như ORDER BY mệnh đề của một SELECT tuyên bố.

Có vẻ như bạn chỉ cần:

ORDER BY 
CASE WHEN TblList.PinRequestCount <> 0 THEN TblList.PinRequestCount END desc,
CASE WHEN TblList.HighCallAlertCount <> 0 THEN TblList.HighCallAlertCount END desc, 
Case WHEN TblList.HighAlertCount <> 0 THEN TblList.HighAlertCount END DESC,
CASE WHEN TblList.MediumCallAlertCount <> 0 THEN TblList.MediumCallAlertCount END DESC,
Case WHEN TblList.MediumAlertCount <> 0 THEN TblList.MediumAlertCount END DESC,
TblList.LastName ASC, TblList.FirstName ASC, TblList.MiddleName ASC

Hoặc có thể:

ORDER BY 
CASE
   WHEN TblList.PinRequestCount <> 0 THEN TblList.PinRequestCount
   WHEN TblList.HighCallAlertCount <> 0 THEN TblList.HighCallAlertCount
   WHEN TblList.HighAlertCount <> 0 THEN TblList.HighAlertCount
   WHEN TblList.MediumCallAlertCount <> 0 THEN TblList.MediumCallAlertCount
   WHEN TblList.MediumAlertCount <> 0 THEN TblList.MediumAlertCount
END desc,
TblList.LastName ASC, TblList.FirstName ASC, TblList.MiddleName ASC

Hơi khó để biết cái nào ở trên (hoặc cái gì khác) là thứ bạn đang tìm kiếm vì bạn không được giải thích thứ tự sắp xếp thực tế mà bạn đang cố gắng đạt được và b) không được cung cấp bất kỳ dữ liệu mẫu nào và kết quả mong đợi, từ đó chúng tôi có thể cố gắng suy ra thứ tự sắp xếp thực tế mà bạn đang cố gắng đạt được.

Đây có thể là câu trả lời mà chúng tôi đang tìm kiếm:

ORDER BY 
CASE
   WHEN TblList.PinRequestCount <> 0 THEN 5
   WHEN TblList.HighCallAlertCount <> 0 THEN 4
   WHEN TblList.HighAlertCount <> 0 THEN 3
   WHEN TblList.MediumCallAlertCount <> 0 THEN 2
   WHEN TblList.MediumAlertCount <> 0 THEN 1
END desc,
CASE
   WHEN TblList.PinRequestCount <> 0 THEN TblList.PinRequestCount
   WHEN TblList.HighCallAlertCount <> 0 THEN TblList.HighCallAlertCount
   WHEN TblList.HighAlertCount <> 0 THEN TblList.HighAlertCount
   WHEN TblList.MediumCallAlertCount <> 0 THEN TblList.MediumCallAlertCount
   WHEN TblList.MediumAlertCount <> 0 THEN TblList.MediumAlertCount
END desc,
TblList.LastName ASC, TblList.FirstName ASC, TblList.MiddleName ASC


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tối ưu hóa truy vấn SQL:Các phương pháp hay nhất để cải thiện hiệu suất

  2. Lỗi máy chủ SQL 4104:Không thể liên kết số nhận dạng nhiều phần.

  3. SQL Server Express so với express localdb

  4. Làm thế nào để chuyển đổi số phút sang định dạng hh:mm trong TSQL?

  5. Làm cách nào để sử dụng bí danh trong mệnh đề where?