SQL条件列数据在select语句中返回

时间:2012-02-15 09:42:41

标签: sql

这是问题的简化:我有一个看起来像这样的选择:

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;

2 个答案:

答案 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

我希望这有帮助。