在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 

有人能告诉我哪里还有问题或者我怎么能重新定义?

+0

你错过了 – NikNik

+0

我不认为这样子查询:SELECT COUNT(*)FROM table2 运行良好。 此外,我不知道应该分组在哪些字段中,因为我已经与Count(*) –

+0

进行了汇总。只需在第二个查询中进行分组,但它可能没有意义查询:)我会给您写信1可能的解决方案如下。 – NikNik

你可以用这个查询尝试:

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