Tengo una consultaDescripción del alias de Oracle: ¿por qué no se reconoce un alias en una consulta a menos que esté envuelto en una segunda consulta?
SELECT COUNT(*) AS "CNT",
imei
FROM devices
que ejecuta muy bien. Quiero restringir aún más la consulta con una instrucción WHERE. El siguiente paso (humanamente) lógico es modificar la consulta followingly:
SELECT COUNT(*) AS "CNT",
imei
FROM devices
WHERE CNT > 1
Sin embargo, esto resulta en un mensaje de error ORA-00904: "CNT": identificador inválido. Por alguna razón, envolviendo la consulta en otra consulta produce el resultado deseado:
SELECT *
FROM (SELECT COUNT(*) AS "CNT",
imei
FROM devices
GROUP BY imei)
WHERE CNT > 1
¿Por qué Oracle no reconoce el alias de "CNT" en la segunda consulta?
Como nota al margen: esta consulta (con agregados) se escribe mejor con la cláusula HAVING: "select count (\ *) cnt, imei from device group by imei having count (\ *)> 1" –