【问题标题】:SQL Conditional column data return in a select statementSQL 条件列数据在 select 语句中返回
【发布时间】:2012-02-15 17:50:22
【问题描述】:

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

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;

【问题讨论】:

  • 有趣的是,我搜索了如何放置条件 sql 值并以确切的大小写找到它(我的查询是在受理人/工作流上)。哈哈

标签: sql


【解决方案1】:

您没有提及您的 DBMS,但搜索到的 CASE 语句适用于我所知道的所有主要 DBMS。

SELECT  ID
        , CASE WHEN WorkStream = 'Internal'
               THEN WorkStream
               ELSE Assignee
          END AS Assignee
        , Workstream
FROM    assignees

参考:MSDN

案例

评估条件列表并返回多个可能的条件之一 结果表达式。

【讨论】:

  • 有没有办法有条件地选择多列?我需要根据连接的表选择列,否则我最终会得到所有表中的列。
  • @akinuri - 不确定我是否正确理解您的要求。我会说,是的,但也许最好发布一个例子和预期的结果。
  • @LievenKeersmaekers 我的问题是关于 attempted solution 到以前的 problem
【解决方案2】:
SELECT ID, 
       CASE WorkStream  WHEN 'Internal' THEN 'INTERNAL' ELSE Assignee as Assignee,    WorkStream  from assignees

希望对你有所帮助。

【讨论】:

  • 为什么CASE和WHEN之间有Workstream?
猜你喜欢
  • 1970-01-01
  • 2020-10-05
  • 1970-01-01
  • 2016-07-02
  • 2012-05-09
  • 2014-01-18
  • 2018-11-06
  • 1970-01-01
相关资源
最近更新 更多