Результат запроса MySQL в виде указанной строки, если int равно

#mysql #sql

#mysql #sql

Вопрос:

MySQL

У меня есть следующий запрос

 "SELECT Status, COUNT( ticket_id) AS total FROM tickets GROUP BY Status"
  

Который возвращает

 Status ¦ Total  
0      ¦   3
2      ¦   1
3      ¦   6
  

Возможно ли изменить результат на pharse, например, если

0 = Открыто, 1 = Удерживается, 2 = Ожидает ответа конечного пользователя, 3 = Разрешено, 4 = Закрыто.

Таким образом, результат запроса будет

 Status                 ¦ Total  
Open                   ¦   3
Awaiting end user      ¦   1
Resolved               ¦   6
  

Любая помощь была бы потрясающей,
Приветствия!

Комментарии:

1. Смотрите dev.mysql.com/doc/refman/8.0/en /…

Ответ №1:

Вам нужно case выражение :

 select (case (Status) 
               when 0 then 'Open' 
               when 1 then 'Hold'
               when 2 then 'Awaiting End User Response'
               when 3 then 'Resolved'
               when 4 then 'Closed'
        end) as total, count(ticket_id) AS total 
from tickets t
group by (case (Status) 
               when 0 then 'Open' 
               when 1 then 'Hold'
               when 2 then 'Awaiting End User Response'
               when 3 then 'Resolved'
               when 4 then 'Closed'
          end);
  

Комментарии:

1. Как сказал Йогеш, вы можете использовать оператор case для замены целого числа статуса фразой. В качестве альтернативы, вы могли бы создать таблицу, указывающую взаимосвязь между кодом и описанием статуса, присоединиться к этой таблице и отобразить описание вместо кода. Таблицы кода (Status_Code, Status_Description в данном случае) действительно полезны для простоты обслуживания.

2. @RiggsFolly спасибо за ваш ответ. Я переместил свой комментарий.

3. @yogeshsharma Спасибо за вашу помощь, она работает именно так, как мне нужно. Лучший человек!