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

Đặt hàng theo và các loại khác nhau trong một TRƯỜNG HỢP

Một câu lệnh CASE chỉ phải giải quyết một kiểu dữ liệu. Điều này bất kể thực tế là bạn biết rằng @orderby sẽ chỉ chọn một nhánh và nó sẽ là một kiểu dữ liệu cụ thể.

Bạn có thể sử dụng một cái gì đó như thế này, sẽ khó nhưng sẽ hiệu quả.

ORDER BY
CASE @orderBy WHEN 1 THEN received_date -- Last Rx'd message
WHEN 2 THEN 0
WHEN 3 THEN 0
WHEN 4 THEN 0
WHEN 5 THEN ime.[allocated_date] -- Allocated Date
ELSE received_date END,
CASE @orderBy WHEN 1 THEN 0
WHEN 2 THEN message_id -- Message Id
WHEN 3 THEN 0
WHEN 4 THEN 0
WHEN 5 THEN 0
ELSE 0 END,
CASE @orderBy WHEN 1 THEN ''
WHEN 2 THEN ''
WHEN 3 THEN zibmat.short_name -- Message action type
WHEN 4 THEN error_action.short_name -- Status type
WHEN 5 THEN ''
ELSE '' END


  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 SCHEMA_ID () hoạt động trong SQL Server

  2. Làm cách nào để hạn chế người dùng chỉ truy cập các đối tượng của một lược đồ trong SQL Server 2008?

  3. Cách trả về đầu ra của thủ tục đã lưu trữ thành một biến trong máy chủ sql

  4. Bỏ khóa ngoại mà không biết tên của ràng buộc?

  5. Sử dụng OBJECT_NAME () để lấy tên đối tượng từ object_id của nó trong SQL Server