У меня есть требование упорядочить набор результатов по столбцу на основе целочисленного ввода в параметр.
Проблема в том, что мне нужно использовать CASE для OrderBy, и кажется, что код принимаетпервый 'TYPE' в столбце case ... любые другие типы терпят неудачу.
Мой код такой:
WITH error_table AS
(
SELECT Row_Number() OVER
(ORDER BY
CASE @orderBy
WHEN 1 THEN received_date -- Last Rx'd message
WHEN 2 THEN message_id -- Message Id
WHEN 3 THEN zibmat.short_name -- Message action type
WHEN 4 THEN error_action.short_name -- Status type
WHEN 5 THEN ime.[allocated_date] -- Allocated Date
ELSE received_date
END) AS RowNumber
,ime.[ijis_message_error_id]
,ime.[message_id]
,ime.[message_version]
Итак, когда OrderBy равен 1, он работает.Он сортируется по rx_date ... но когда я отправил ему 2, он завершается с ошибкой преобразования времени данных.
Похоже, что все типы должны быть одинаковыми ...
Отправка5 отлично работает, так как это время даты.
Есть ли способ, как я могу это исправить?