#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 Спасибо за вашу помощь, она работает именно так, как мне нужно. Лучший человек!