SQL - problema con el HAVING

 
Vista:

problema con el HAVING

Publicado por maria (4 intervenciones) el 17/06/2010 10:27:13
Buenos días.

Tengo un problema al hacer una consulta con el manejador de oracle.

Tengo una tabla CURINGORIGINAL donde quedan registrados todos los tiempos de cura de todas las prensas.
Quiero sacar todos los registros de una determinada prensa que tienen como tiempo de cura el maximo existente.

Esto se podría hacer así:
select * from CURINGORIGINAL
where datetime = (Select max(datetime) from CURINGORIGINAL where CUREPRESS = 'A01');

Pero esto consume mucho tiempo y recursos al tener que gestionar una tabla generada a partir del select anidado.

Entonces he visto que se puede hacer con el HAVING:
Segun la documentacion que he visto sería:

select * from CURINGORIGINAL
where CUREPRESS = 'A01'
having DATETIME = MAX(DATETIME)

Pero me da error por el GROUP BY, me dice que no es una expresion de ese tipo.

No se lo que me falta porque si añado el GROUP BY CUREPRESS me dejaría un solo registro.....

Necesito ayuda please.

muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

RE:problema con el HAVING

Publicado por Leonardo Josue (1173 intervenciones) el 23/06/2010 15:57:56
Buenos días María:

Para poder utilizar el operador HAVING es forzoso que utilizes también la cláusula GROUP BY... la agrupación puedes hacerla por más de un campo, para que te regrese todos los registros que necesitas.

Si puedes poner algunos datos de ejemplo y la salida que esperas tal vez podamos ayudarte a sacar la consulta correcta.

Otra opción que tienes sería el uso de procedimientos almacenados, la consulta la harías en dos partes, una para obtener la fecha máxima de la tabla la cual la almacenarías en una variable y otra con la consulta sencilla, utilizando la variable que creaste anteriormente.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con el HAVING

Publicado por maria (4 intervenciones) el 23/06/2010 16:09:07
Perdona pensaba que estaba bien explicado.

Tengo una tabla donde cada cura se va registrando para todas las prensas que hay.

Lo que quiero e sacar todas las columnas de la tabla tales qeu cumplan con la condición de que su fecha sea la misma que la maxima registrada para la prensa A01.

como te ponía puedo hacer un select que me de la fecha maxima y anidarlo pero había visto que se puede hacer con un having.
Esto es como lo tengo:
select *
from CURINGORIGINAL
where datetime = (Select max(datetime)
from CURINGORIGINAL
where CUREPRESS = 'A01');

Y esto es como dice que se puede hacer:
select *
from CURINGORIGINAL
where CUREPRESS = 'A01'
having DATETIME = MAX(DATETIME);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar