2013-02-27 3 views
2

Мне нужно написать выбор, в котором будут перечислены все клиенты, но вот трюк, если у клиента есть статус 1 или 2, он должен пометить этого клиента * перед именем. Это должно выглядеть какПростой выбор с трюком

Vasya Pupkin 
* Masha Pupkina 

выберите выглядит как

select FirstName + ' '+ LastName, Address, DOB 
from Clients 
Order By FirstName 

, что означает Маша активный клиент. Проведите почти 2 часа для поиска в Интернете, но не можете найти что-нибудь полезное. Из-за этого задающего вопрос здесь.

ответ

3

Чтобы проверить поле состояния, вам необходимо использовать CASE structure.

Проверить это полностью функциональный код с образцами данных на SQL Fiddle

SELECT (CASE 
      WHEN status IN (1, 2) THEN '* ' 
      ELSE '' 
     END) + FirstName + ' '+ LastName as Client_List 
    FROM Clients 
ORDER BY FirstName 

данных:

[id] [status] [FirstName] [LastName] 
1  3  Vasya  Pupkin 
2  2  Masha  Pupkina 
3  3  Sasha  Alexeivich 
4  1  Katya  Alexeivna 

Результат:

CLIENT_LIST 
* Katya Alexeivna 
* Masha Pupkina 
Sasha Alexeivich 
Vasya Pupkin 

EDIT Ой! слишком поздно, ответ muhmud правильный

+1

Thanx @ Ярослав! Я люблю задавать вопросы, когда настанет день в Европе и России :) – Andrey

+1

Добро пожаловать. Аляска, это далеко. У меня есть семья в Туле и Москве. – Yaroslav

+0

Сейчас полночь в АК! – Andrey

3
select (case when status in (1, 2) then '* ' else '' end) + FirstName + ' '+ LastName, Address, DOB 
from Clients 
Order By FirstName 
+0

Awesome! Я пытался сорвать дело, но он меня бросал кучу ошибок :) !! Thanx – Andrey

+0

Если ответ был верным, отметьте отметку под счетчиком голосов, чтобы другие могли видеть, что это правильный и принятый ответ. – Yaroslav

Смежные вопросы