SQL сервера 2016

#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. Большое спасибо. Это сработало