2017-08-09 34 views
0

我想將適用於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

回答

0

你可以用這個查詢嘗試:

SELECT CASE WHEN (SELECT COUNT(*) FROM table1) > 0 then (SELECT COUNT(*) FROM table1) 
     ELSE (SELECT COUNT(*) FROM table2) 
     END 
FROM dual; 

它仍然是醜陋,但它的工作原理:)

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