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