Возврат данных условного столбца SQL в выражении select
Вот упрощение проблемы: у меня есть выбор, который выглядит так:
Select ID, Assignee, WorkStream from assignees;
И мгновенный снимок возвращаемых данных выглядел так:
1|Joe Soap|Internal
2|Mrs Balls|External
Что бы я хотел сделать, это выбрать, чтобы не отображать имя Assignee, если рабочая точка является внутренней. Вместо этого отобразить Рабочий поток.
Итак, например, результат, который я хочу достичь, будет следующим:
1|Internal|Internal
2|Mrs Balls|External
Надеюсь, это имеет смысл? В основном условный select, который может определить, содержит ли определенный столбец определенное значение, затем замените другое значение столбца на [whatever].
Спасибо заранее!
EDIT Я хочу добиться чего-то подобного:
Select ID, if (workstream='internal' select Workstream as Assignee - else - select Assignee as Assigneee), WorkStream from assignees;
Ответы
Ответ 1
Вы не указали свою СУБД, но найденный CASE
оператор работает во всех основных СУБД, которые я знаю.
SELECT ID
, CASE WHEN WorkStream = 'Internal'
THEN WorkStream
ELSE Assignee
END AS Assignee
, Workstream
FROM assignees
Ссылка: MSDN
CASE
Вычисляет список условий и возвращает один из нескольких возможных выражения результата.
Ответ 2
SELECT ID,
CASE WorkStream WHEN 'Internal' THEN 'INTERNAL' ELSE Assignee as Assignee, WorkStream from assignees
Я надеюсь, что эта помощь.