2010-04-26 6 views
1

J'utilise ce code:nombre sql() aider à une instruction select

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

... pour récupérer des données qui donne:

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

Comment puis-je récupérer que si au total rapports est plus grand que trois? J'ai essayé:

WHERE TOTAL_REPORTS > 3 

... mais il dit

ORA-00904: "TOTAL_REPORTS": identifiant invalide

Répondre

3

Depuis que vous avez utilisé un GROUP BY, vous devez utiliser HAVING plutôt que WHERE. Vous devez également utiliser explicitement COUNT(MACH_NO) plutôt que votre alias de TOTAL_REPORTS. Par conséquent, utilisez HAVING COUNT(MACH_NO) > 3 plutôt que 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; 
+0

travail Un grand merci beaucoup –

+0

Ive jamais utilisé la clause having avant, pas étonnant que le progrès ne pouvait pas –

-1

lieu de OÙ TOTAL_REPORTS> 3, essayez OU COUNT (MACH_NO)> 3.

1

Utilisez HAVING CLAUSE

SELECT MACH_NO, COUNT(MACH_NO) AS TOTAL_REPORTS FROM MAINTENANCE_LOG GROUP BY MACH_NO HAVING TOTAL_REPORTS > 3; 
+0

vous aviez presque, grâce Thou –

0

SELECT MACH_NO, COUNT (MACH_NO) AS TOTAL_REPORTS DE MAINTENANCE_LOG GROUPE PAR MACH_NO having count(mach_no) > 3

+0

Merci cela a fonctionné aswell –

Questions connexes