Tengo este query en FB 2.5 a partir de una vista:
Código PHP:
SELECT DISTINCT Codigo, EXTRACT(MONTH FROM MAX(Fecha)), Situacion, Periodo
FROM Rc03
WHERE (Fecha < :Fecha OR Fecha IS NULL)
AND Periodo = 'Anual'
GROUP BY 1, 3, 4 ORDER BY 4, 3, 2
Evidentemente así me devolverá filas en las que la segunda columna valga 1, 2, 3... o NULL si es que no hay fecha. Ahora necesito, a partir de esa misma consulta, sacar solamente aquellos registros correspondientes al mes 2. Había pensado algo así:
Código PHP:
SELECT DISTINCT Codigo, EXTRACT(MONTH FROM MAX(Fecha)), Situacion, Periodo
FROM Rc03
WHERE (Fecha < :Fecha OR Fecha IS NULL)
AND Periodo = 'Anual'
AND EXTRACT(MONTH FROM MAX(Fecha)) = 2
GROUP BY 1, 3, 4 ORDER BY 4, 3, 2
Sin embargo, y esto tampoco lo sabía porque no se me había dado nunca una situación parecida, he decubierto que dentro de un WHERE no puede ponerse campos agregados como el MAX(Fecha). Según el mesaje de error de FB debería usar la claúsula HAVING pero, sinceramente, por más que leo sobre ella no acabo de comprender como funciona; ¿debería ser algo así?
Código PHP:
SELECT DISTINCT Codigo, EXTRACT(MONTH FROM MAX(Fecha)), Situacion, Periodo
FROM Rc03
WHERE (Fecha < :Fecha OR Fecha IS NULL)
AND Periodo = 'Anual'
GROUP BY 1, 3, 4
HAVING EXTRACT(MONTH FROM MAX(Fecha)) = 2
ORDER BY 4, 3, 2