Tengo esta consulta que he escrito en PostgreSQL que devuelve un error que dice:
[Err] ERROR:
LINE 3: FROM (SELECT DISTINCT (identifiant) AS made_only_recharge
Esta es la consulta completa:
SELECT COUNT (made_only_recharge) AS made_only_recharge
FROM (
SELECT DISTINCT (identifiant) AS made_only_recharge
FROM cdr_data
WHERE CALLEDNUMBER = '0130'
EXCEPT
SELECT DISTINCT (identifiant) AS made_only_recharge
FROM cdr_data
WHERE CALLEDNUMBER != '0130'
)
Tengo una consulta similar en Oracle que funciona bien. El único cambio es donde tengo EXCEPT
en Oracle lo he reemplazado con la MINUS
palabra clave. Soy nuevo en Postgres y no sé lo que está pidiendo. ¿Cuál es la forma correcta de manejar esto?
sql
oracle
postgresql
subquery
Roykasa
fuente
fuente
CALLEDNUMBER = '0130'
.Respuestas:
agregue un
ALIAS
en la subconsulta,SELECT COUNT(made_only_recharge) AS made_only_recharge FROM ( SELECT DISTINCT (identifiant) AS made_only_recharge FROM cdr_data WHERE CALLEDNUMBER = '0130' EXCEPT SELECT DISTINCT (identifiant) AS made_only_recharge FROM cdr_data WHERE CALLEDNUMBER != '0130' ) AS derivedTable -- <<== HERE
fuente
AS pg_sucks
, que significa "bueno, aquí tienes un identificador redundante, pero podrías generar algunos internamente tú mismo, ¡maldito postgres!" :)En el caso de tablas anidadas, algunos DBMS requieren usar un alias como MySQL y Oracle, pero otros no tienen un requisito tan estricto, pero aún permiten agregarlos para sustituir el resultado de la consulta interna.
fuente