Sql 如果计数为>;则选择计数和列值;0

Sql 如果计数为>;则选择计数和列值;0,sql,oracle,Sql,Oracle,我有一个如下的查询: SELECT case when count(*) > 0 then 'Y' else 'N' end exists, column FROM table WHERE condition; 这不起作用,因为我没有按函数分组。但是如果我在“column”上分组,那么如果不满足条件,我将得到0行。我知道我的查询将只返回一行,但即使我让查询只选择第一行,它仍然表示它需要一个GROUPBY函数 我理想的查询输出是 “Y”| 1 如果行存在并且

我有一个如下的查询:

SELECT
    case when count(*) > 0 then 'Y' else 'N' end exists,
    column
FROM
    table
WHERE
    condition;
这不起作用,因为我没有按函数分组。但是如果我在“column”上分组,那么如果不满足条件,我将得到0行。我知道我的查询将只返回一行,但即使我让查询只选择第一行,它仍然表示它需要一个GROUPBY函数

我理想的查询输出是

“Y”| 1

如果行存在并且

“N”|空

如果没有

我能做些什么来解决这个问题?

您可以简单地做:

SELECT (case when count(*) > 0 then 'Y' else 'N' end) as exists,
       MAX(column) as column
FROM table
WHERE condition;
没有分组依据的聚合查询总是返回一行

SELECT
    case when count(*) > 0 then 'Y' else 'N' end exists,
    max(1) as column
FROM
    table
WHERE
    condition;

当条件满足时,返回Y | 1。

我同意这是最好的解决方案。如果保证只有一行,那么使用MAX()必须为您提供列的值。具有单个值的集合中的最大值必须是该值。