这是一个简单的问题:我有一个看起来像这样的选择:
Select ID, Assignee, WorkStream from assignees;
Run Code Online (Sandbox Code Playgroud)
并且返回的数据的快照看起来像这样
1|Joe Soap|Internal
2|Mrs Balls|External
Run Code Online (Sandbox Code Playgroud)
我想做的是如果工作团队是内部的,则选择不显示受理人姓名.而是显示工作流.
因此,例如我想要达到的结果是:
1|Internal|Internal
2|Mrs Balls|External
Run Code Online (Sandbox Code Playgroud)
我希望这是有道理的?基本上是一个条件选择,可以检测某个列是否包含某个值,然后用[whatever]替换另一个列值.
提前致谢!
编辑我想实现这样的事情:
Select ID, if (workstream='internal' select Workstream as Assignee - else - select Assignee as Assigneee), WorkStream from assignees;
Run Code Online (Sandbox Code Playgroud)
Lie*_*ers 57
您没有提到您的DBMS,但搜索过的CASE语句适用于我所知道的所有主要DBMS.
SELECT ID
, CASE WHEN WorkStream = 'Internal'
THEN WorkStream
ELSE Assignee
END AS Assignee
, Workstream
FROM assignees
Run Code Online (Sandbox Code Playgroud)
参考:MSDN
案件
计算条件列表并返回多个可能的结果表达式之一.
SELECT ID,
CASE WorkStream WHEN 'Internal' THEN 'INTERNAL' ELSE Assignee as Assignee, WorkStream from assignees
Run Code Online (Sandbox Code Playgroud)
希望对您有所帮助。