在oracle中的案例数不是一个单一组的功能oracle
问题描述:
我想将适用于MSSQL的查询适配到Oracle,查询要大得多(这部分只是一个更大的查询中的一个字段),但我设法减少它看起来更简单。在oracle中的案例数不是一个单一组的功能oracle
SELECT CASE WHEN COUNT(*) > 0 THEN COUNT(*)
ELSE (SELECT COUNT(*) FROM table2)
END
FROM table1
我得到的错误是:
ora-00937 not a single-group group function
有人能告诉我哪里还有问题或者我怎么能重新定义?
答
你可以用这个查询尝试:
SELECT CASE WHEN (SELECT COUNT(*) FROM table1) > 0 then (SELECT COUNT(*) FROM table1)
ELSE (SELECT COUNT(*) FROM table2)
END
FROM dual;
它仍然是丑陋,但它的工作原理:)
答
我认为NikNik答案是清洁的,但另一种解决办法是:
SELECT *
FROM (SELECT CASE
WHEN Count(*) > 0 THEN Count(*)
ELSE (SELECT Count(*)
FROM table2)
END
FROM table1
GROUP BY table1.primarykey1,
table1.primarykey2)
WHERE ROWNUM = 1
你错过了 – NikNik
我不认为这样子查询:SELECT COUNT(*)FROM table2 运行良好。 此外,我不知道应该分组在哪些字段中,因为我已经与Count(*) –
进行了汇总。只需在第二个查询中进行分组,但它可能没有意义查询:)我会给您写信1可能的解决方案如下。 – NikNik