我需要使用一个case语句来计算结果,以确定输出的内容。
我想写的是当a_code返回多于1个值时输出'n/a'否则输出a_code。
我是这么试的
select
case when COUNT(a_code) > 1 then 'n/a' else a_code end
from
table_name
where b_code = 'abc';
ORA-00937上的错误:不是一个单组group函数我知道这个错误是因为没有group by。
我的问题是像这样添加组
select
case when COUNT(a_code) > 1 then 'n/a' else a_code end
from
table_name
where b_code = 'abc'
group by a_code;
它不计算返回的a_code总数并确定是"n/a“还是打印a_code,而是计算重复的a_codes,如果有重复的a_codes,则打印”n/a“。
你知道我该怎么写这个查询吗?
2条答案
按热度按时间6l7fqoea1#
可以使用解析
COUNT
函数(而不是聚合函数):其中,对于示例数据:
输出:
| A_代码|
| - ------|
| 不适用|
| 不适用|
fiddle
gr8qqesn2#
一些样本数据和预期结果将有所帮助;同时看看这是否合理。
对于这样的示例数据,首先计算您感兴趣的行数,然后在final select中使用该值:
如果没有至少两个
abc
: