Tengo una consulta como esta:utilizando una columna de alias en la cláusula where en PostgreSQL
SELECT
jobs.*,
(
CASE
WHEN lead_informations.state IS NOT NULL THEN lead_informations.state
ELSE 'NEW'
END
) AS lead_state
FROM
jobs
LEFT JOIN lead_informations ON
lead_informations.job_id = jobs.id
AND
lead_informations.mechanic_id = 3
WHERE
lead_state = 'NEW'
que da el siguiente error:
PGError: ERROR: column "lead_state" does not exist
LINE 1: ...s.id AND lead_informations.mechanic_id = 3 WHERE (lead_state...
en MySQL esto es válido, pero aparentemente no en Postgresql. Por lo que puedo deducir, la razón es que la parte SELECT
de la consulta se evalúa más tarde que la parte WHERE
. ¿Hay una solución común para este problema?
creo que esto no es válida en PostgreSQL ... – pcent
@pcent que explicaría el error entonces ... – troelskn
Es una buena pregunta, pero una consulta de ejemplo extraña. Nunca desea seleccionar un valor no NULL para esa columna, por lo que toda la declaración CASE es completamente innecesaria. – phils