如果计数>>,则选择计数和列值。 0

时间:2017-05-30 14:08:43

标签: sql oracle

我有一个如下所示的查询:

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

这不起作用,因为我没有按功能分组。但如果我在“列”上分组,那么如果条件不满足,我会得到0行。我知道我的查询将只返回一行,但即使我只查询第一行,它仍然表示它需要按功能分组。

查询的理想输出是

  

'Y'| 1

如果行存在且

  

'N'|空

如果不是

我该怎么做才能解决这个问题?

2 个答案:

答案 0 :(得分:2)

您可以这样做:

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

没有GROUP BY的聚合查询总是返回一行。

答案 1 :(得分:0)

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

这会返回Y |满足条件时为1。