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()必须为您提供列的值。具有单个值的集合中的最大值必须是该值。