ЗАКАЗАТЬ ПО СЛУЧАЮ КОГДА В алфавитном порядке - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь заказать запрос на основе имеющихся у меня ключей i18n. Поэтому я построил этот запрос:

SELECT  "workflow_tasks".* FROM "workflow_tasks"
ORDER BY CASE
WHEN type='Workflow::Tasks::EmailCloseBrothersAboutPersonalDetailsChange' THEN 'Email Close Brothers'
WHEN type='Workflow::Tasks::CaptureFinanceProposal' THEN 'Record Finance Status'
WHEN type='Workflow::Tasks::SubmitCreditCheck' THEN 'Submit Credit Check'
WHEN type='Workflow::Tasks::UpdateDriverBankDetail' THEN 'Update Driver''s Bank Details'
WHEN type='Workflow::Tasks::UpdateDriverPersonalDetail' THEN 'Update Driver''s Personal Details'
WHEN type='Workflow::Tasks::ValidateInsuranceCertificate' THEN 'Validate Driver''s Insurance Certificate'
END

Я ожидал, что это даст мне алфавитный список задач, основанный на следующей строке THEN

Порядок почти правильный, за исключением того, что ValidateInsuranceCertificate предшествует UpdateDriverPersonalDetails. Должно быть, я неправильно понял использование CASE в ORDER BY: enter image description here

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

В вашем запросе есть опечатка, описывающая type.

У вас есть:

WHEN type='Workflow::Tasks::UpdateDriverBankDetail'

Но тип на скриншоте вашей базы данных - множественное число. Итак, вы должны иметь:

WHEN type='Workflow::Tasks::UpdateDriverBankDetails'

Возможно, опечаток будет больше, но на скриншоте данные обрезаются.

0 голосов
/ 30 октября 2018

Я предполагаю, что вы как-то не получаете точного соответствия. Я бы начал с:

SELECT wf.*,
       (CASE WHEN type = 'Workflow::Tasks::EmailCloseBrothersAboutPersonalDetailsChange' THEN 'Email Close Brothers'
             WHEN type = 'Workflow::Tasks::CaptureFinanceProposal' THEN 'Record Finance Status'
             WHEN type = 'Workflow::Tasks::SubmitCreditCheck' THEN 'Submit Credit Check'
             WHEN type = 'Workflow::Tasks::UpdateDriverBankDetail' THEN 'Update Driver''s Bank Details'
             WHEN type = 'Workflow::Tasks::UpdateDriverPersonalDetail' THEN 'Update Driver''s Personal Details'
             WHEN type = 'Workflow::Tasks::ValidateInsuranceCertificate' THEN 'Validate Driver''s Insurance Certificate'
         END) as sortkey
FROM "workflow_tasks" wf
ORDER BY sortkey;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...