2017-08-09 3 views
0

MSSQLで動作するクエリを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

2番目のクエリでグループ化する必要がありますが、それはおそらくセンスクエリではありません:) 1以下のaswerの可能な解決策。 – 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 
関連する問題