 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Jue 08 Feb, 2018 12:31 pm Asunto: Condición para un SELECT |
|
|
Tengo este query en FB 2.5 a partir de una vista:
| Código: | 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: | 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: | 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 |
_________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
JesúsGandia Master


Registrado: 17 Jul 2004Mensajes: 403Ubicación: Gandia, Valencia
|
Publicado: Mie 02 May, 2018 5:40 pm Asunto: |
|
|
Tienes que quitar MAX ya que estás restringiendo los RESULTADOS condicionados por la agrupación MAX()
| Código: |
SELECT DISTINCT Codigo, EXTRACT(MONTH FROM Fecha), Situacion, Periodo
FROM Rc03
WHERE (Fecha < :Fecha OR Fecha IS NULL)
AND Periodo = 'Anual'
AND EXTRACT(MONTH FROM Fecha) = 2
GROUP BY 1, 3, 4 ORDER BY 4, 3, 2
|
_________________ Muchos hombres no se equivocan jamás porque no se proponen nada razonable. |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|