1

私はこのコードを使用しています:

  SELECT MACH_NO, 
         COUNT(MACH_NO) AS TOTAL_REPORTS
    FROM MAINTENANCE_LOG
GROUP BY MACH_NO;

...次のようなデータを取得します。

MACH_NO  TOTAL_REPORTS
----------------------
1        4
5        2
8        1
7        1

レポートの合計が 3 つを超えている場合にのみ取得するにはどうすればよいですか? 私は試した:

WHERE TOTAL_REPORTS > 3 

...しかし、それは言う

ORA-00904: "TOTAL_REPORTS": 識別子が無効です

4

4 に答える 4

3

を使用したので、ではなく.GROUP BYを使用する必要があります。のエイリアスではなく、明示的に使用する必要もあります。HAVINGWHERECOUNT(MACH_NO)TOTAL_REPORTS

HAVING COUNT(MACH_NO) > 3ではなく、を使用してWHERE TOTAL_REPORTS > 3ください。

SELECT MACH_NO, 
       COUNT(MACH_NO) AS TOTAL_REPORTS 
FROM MAINTENANCE_LOG 
GROUP BY MACH_NO
HAVING COUNT(MACH_NO) > 3;
于 2010-04-26T07:44:57.367 に答える
1

HAVING句を使用

SELECT MACH_NO, COUNT(MACH_NO) AS TOTAL_REPORTS FROM MAINTENANCE_LOG GROUP BY MACH_NO HAVING TOTAL_REPORTS > 3;
于 2010-04-26T07:44:33.123 に答える
0

SELECT MACH_NO, COUNT(MACH_NO) AS TOTAL_REPORTS FROM MAINTENANCE_LOG GROUP BY MACH_NO having count(mach_no) > 3

于 2010-04-26T07:44:48.520 に答える
-1

WHERE TOTAL_REPORTS > 3 の代わりに、WHERE COUNT(MACH_NO) > 3 を試してください。

于 2010-04-26T07:42:45.620 に答える