Pregunta

Estoy teniendo dificultades para escribir una consulta HQL que buscará en una tabla todas las filas donde se cumplen ciertos criterios, pero solo quiero devolver la fila con la fecha máxima.

Por ejemplo, la cláusula Where de la consulta sería algo así como:

column1 = input1 y column2 = input2 y date_column <date_input

Esto podría devolver varias filas con diferentes fechas, pero solo estoy interesado en la que tenga la última fecha. También lo necesito para devolver toda la fila.

Actualmente, estoy ejecutando la consulta con los criterios anteriores ordenados descendiendo por fecha y luego obteniendo el primer elemento en C#. Me gustaría tener una consulta HQL o una solución de ICriteria que pueda hacer esto en un solo paso si es posible.

¿Fue útil?

Solución

Solo necesitas usar una subconsulta. Seleccione la fecha máxima de las filas calificadas y luego seleccione todos los registros que coincidan con la fecha máxima. Mi HQL está un poco oxidado pero se entiende la idea.

from TableA a 
where a.Date in (
    select max(b.Date) 
    from TableA b 
    where b.Something="You get the idea"
)

Subcontrol, Función agregada

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top