【问题标题】:Check data condition with multiple row and get only single output value检查多行数据条件,只得到单个输出值
【发布时间】:2020-01-23 06:29:01
【问题描述】:

检查多行数据条件,只得到单个输出值

Status
SUCCESSFULL
SUCCESSFULL
SUCCESSFULL
SUCCESSFULL

然后需要输出“SUCCESSFULL”

如果任何记录的状态为“失败”,则输出将是“失败”,如下所示

Status
SUCCESSFULL
SUCCESSFULL
FAILED
SUCCESSFULL

然后需要输出“FAILED”

【问题讨论】:

  • 标签让我吃惊。 PL/SQL Developer 软件真的支持 SQL Server 吗?而且您正在运行两个不同版本的 SQL Server?
  • @Rushang 。 . .我觉得有趣的是“成功”拼写错误,而“失败”却不是。

标签: sql sql-server-2012 sql-server-2016


【解决方案1】:

你只是在寻找这个吗:

select min(status) from mytable;

'FAILED' 在字母表中位于 'SUCCESSFULL' 之前,因此使用 MIN,当至少一行是 'FAILED''SUCCESSFULL' 时,只有当所有行都是 'SUCCESSFULL' 时,您才会得到 'FAILED'。)

【讨论】:

    【解决方案2】:

    您可以使用聚合函数count()sum() 来实现这一点。

    select 
        case when 
            sum(case when status = 'SUCCESSFULL' then 1 else 0 end)  = count(1) 
        then 'SUCCESSFULL' 
        else 'FAILED'
        end
    from tableA
    

    【讨论】:

      【解决方案3】:
      SELECT DISTINCT Status 
         FROM Your_table
            ORDER BY status
      

      【讨论】:

      • 您应该始终描述您的代码是如何表达的,以及这将如何解决 OP 要求,无论是长篇还是至少是简短的描述。
      猜你喜欢
      • 2018-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 2021-10-21
      • 1970-01-01
      相关资源
      最近更新 更多