Ver Mensaje Individual
  #1  
Antiguo 08-02-2018
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Reputación: 19
Angel.Matilla Va por buen camino
Condición para un SELECT

Tengo este query en FB 2.5 a partir de una vista:
Código PHP:
SELECT DISTINCT CodigoEXTRACT(MONTH FROM MAX(Fecha)), SituacionPeriodo
FROM Rc03 
WHERE 
(Fecha < :Fecha OR Fecha IS NULL)
AND 
Periodo 'Anual'
GROUP BY 134 ORDER BY 43
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 CodigoEXTRACT(MONTH FROM MAX(Fecha)), SituacionPeriodo
FROM Rc03 
WHERE 
(Fecha < :Fecha OR Fecha IS NULL)
AND 
Periodo 'Anual'
AND EXTRACT(MONTH FROM MAX(Fecha)) = 2
GROUP BY 1
34 ORDER BY 43
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 CodigoEXTRACT(MONTH FROM MAX(Fecha)), SituacionPeriodo
FROM Rc03 
WHERE 
(Fecha < :Fecha OR Fecha IS NULL)
AND 
Periodo 'Anual'
GROUP BY 13
HAVING EXTRACT
(MONTH FROM MAX(Fecha)) = 2
ORDER BY 4
3
Responder Con Cita