如何根据所选结果返回不同的值?

时间:2018-11-17 03:06:53

标签: sql

我有一个非常简单的查询,如下所示:

SELECT Name FROM Users WHERE Age < 20;

我想实现这样的功能:

  • 如果结果不包含任何值,则返回一个空字符串”。
  • 如果结果仅包含1个值,请返回该值。
  • 如果结果包含多个值,则返回常量字符串'Multiple'。

如何用一个非常简单的查询实现它?感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

您可以使用SELECT部分中的CASE之类的内容来修改您的returned result

答案 1 :(得分:0)

以下查询可以帮助您解决3个条件。 为了清楚起见,我没有输入空字符串,而是输入了“ None”。您可以将其编辑为空字符串。

select case when count(*)=0 then 'None'
            when count(name)=1 then max(name)
            when count(name)>1 then max('Multiple')
       end as name     
  from users1 
 where age <20

查看可满足所有3个测试用例的完整演示

  1. 没有年龄<20岁的记录
  2. 年龄在20岁以下的完全是一条记录
  3. 年龄在20岁以下的多条记录

演示 https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=929d6ffca27ab5c4c05eeabdb6dd8b12

答案 2 :(得分:0)

我不确定“一个值”是指什么。那是一行吗?还是一个名字(可能在多行上)?

我倾向于这样表述:

SELECT (CASE WHEN COUNT(*) = 0 THEN 'None'
             WHEN MIN(Name) = MAX(Name) THEN MIN(Name)
             ELSE 'Multiple'
        END) as one_row_value
FROM Users
WHERE Age < 20;