我正在尝试将在MSSQL中运行的查询调整为Oracle,查询要大得多(这部分只是来自更大查询的字段)但我设法减少它以使它看起来更简单。
SELECT CASE WHEN COUNT(*) > 0 THEN COUNT(*)
ELSE (SELECT COUNT(*) FROM table2)
END
FROM table1
我得到的错误是:
ora-00937 not a single-group group function
有人可以告诉我问题出在哪里或者我如何重新定义它?
答案 0 :(得分:1)
您可以尝试使用此查询:
SELECT CASE WHEN (SELECT COUNT(*) FROM table1) > 0 then (SELECT COUNT(*) FROM table1)
ELSE (SELECT COUNT(*) FROM table2)
END
FROM dual;
它仍然很丑,但它有效:)
<强>更新强>
解释它是如何运作的:
我们有2个案例:
Dual是虚拟表。
答案 1 :(得分:0)
我认为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