У меня эта неприятная проблема на SQL Server, где я пытаюсь добавить ORDER BY @sortColumn
.ORDER BY CASE в SQL Server
PROCEDURE [dbo].[pr_get_checklist_activity]
(
@userId int,
@sortColumn varchar
)
[...]
SELECT
checklist.checklist_id,
[etc]
[... SQL BLA BLA ...]
ORDER BY
CASE WHEN @sortColumn = 'checklist_id'
THEN checklist.checklist_id END,
CASE WHEN @sortColumn = 'percentage'
THEN checklist.afgerond_percentage END,
CASE WHEN @sortColumn = 'aangemaakt_op'
THEN checklist.aangemaakt_op END;
Теперь, когда я пытаюсь запустить его с чем-то вроде:
[dbo].[pr_get_checklist_activity] 19, 'percentage'
или
[dbo].[pr_get_checklist_activity] 19, 'aangemaakt_op'
Ничего на самом деле не происходит, результаты совпадают. Нет ошибки, без изменений ...
Я создаю его как хранимую процедуру в SQL Server Management Studio и используя VB.
Вы пропустили удалить запятую в конце второй, когда линия. – jarlh
@jarlh Хороший улов, спасибо! – codingbadger
Первая часть вашего ответа будет работать только в том случае, если 3 столбца имеют одинаковый тип. Попробуйте его с помощью varchar, date и integer. Синтаксис размещенного вопроса работает лучше –