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