#sql #sql-server
Вопрос:
У меня возникли проблемы с поиском ответа на этот вопрос. Я думаю, что это та фраза, которую я использую. Я просто опишу свой сценарий.
Написание простого оператора Select.
select Lastname, FirstName, Department, EmployeeID, CardholderStatus, CardholderExpireDate
from dbo.Cardholders
order by LastName
В поле Статус владельца карты отображается числовое значение, 0,1,0 r 2
Я хотел определить значение в инструкции select для вывода, чтобы оно было в более удобочитаемом формате для человека, которому будет отправлен отчет.
0 = Неактивно. 1 = Активен. 2 = Дата.
Как бы я написал эту часть заявления?
Комментарии:
1. Вы можете использовать оператор case: СТАТУС держателя карты CASE, КОГДА 0, ЗАТЕМ «Неактивен», КОГДА 1, ЗАТЕМ «Активен», КОГДА 2, ЗАТЕМ «Дата» ЗАКАНЧИВАЕТСЯ как описание
2. Вы можете сделать это в коде — но что вы будете делать, когда напишете еще одно утверждение, которое также должно декодировать значение? Обычно для этого создается таблица поиска, а затем при необходимости присоединяется. Вы также можете создать представление для этой цели или добавить вычисляемый столбец в таблицу.
3. Спасибо всем вам, заявление по делу сработало
Ответ №1:
Это должно соответствовать вашим потребностям:
SELECT Lastname, FirstName, Department, EmployeeID, CardholderStatus, CardholderExpireDate,
CASE WHEN cardholderStatus = 0 THEN 'Inactive'
WHEN cardholderStatus = 1 THEN 'Active'
ELSE 'Date'
END AS cardholderStatusAsText
FROM dbo.Cardholders ORDER BY LastName
Комментарии:
1. Большое спасибо. Это сработало