Как я могу использовать postgresql для сортировки запроса с пользовательским порядком сортировки по строке? - PullRequest
0 голосов
/ 01 декабря 2018

У меня есть таблица incident, в которой есть status, которая является строкой.

Я хочу запросить все инциденты с пользовательским порядком сортировки.

Статус может быть одиниз следующих: inProgress, completed, canceled

Я хочу иметь возможность сортировки по своему усмотрению.Позвольте клиенту указать порядок сортировки.У меня проблемы с самим запросом.

Я пробовал несколько вещей:

SELECT * 
FROM incident as i 
ORDER BY array_position(array["inProgress", "completed", "canceled"], i.status)

SELECT * 
FROM incident as i 
ORDER BY case when status = "inProgress" then 0
         case when status = "completed" then 1
         case when status = "canceled" then 2
              else 3

Я получаю ошибку Unhandled rejection SequelizeDatabaseError: column "inProgress" does not exist во всех моих попытках.

Я ожидаю, что inProgress будет значением status, но я не уверен, что я делаю неправильно.

1 Ответ

0 голосов
/ 01 декабря 2018

Проверьте документацию на правильный синтаксис.И текст использовать одинарные кавычки.Двойные кавычки для имен полей

ORDER BY case 
              when status = 'inProgress' then 0
              when status = 'completed' then 1
              when status = 'canceled' then 2
              else 3
         end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...