Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Ordenar por la última fecha en varios campos de fecha de una tabla (https://www.clubdelphi.com/foros/showthread.php?t=90007)

Luis M. 17-03-2016 20:36:33

Ordenar por la última fecha en varios campos de fecha de una tabla
 
Hola.
Uso Firebird 2.5.
Tengo la siguiente consulta:
Código SQL [-]
Select numero,fecha,cliente,prueba1,prueba2,prueba3,prueba4 from cencargos order by prueba4,prueba3,prueba2,prueba1
Lo que quisiera obtener es una consulta ordenada por la última fecha de los campos prueba1,prueba2,prueba3,prueba4.

Por ejemplo, tengo estos datos:

núm. Fecha Cliente Prueba1 prueba2 prueba3 prueba4
--------------------------------------------------------------------------------
01 01/01/15 XX 01/05/15
02 02/01/15 AA 01/02/15 01/03/15
03 03/01/15 BB 01/03/15 01/04/15 01/06/15
04 01/02/15 CC 01/03/15 15/03/15 01/04/15 15/04/15


La consulta tendría que devolver

núm. Fecha Cliente Prueba1 prueba2 prueba3 prueba4
--------------------------------------------------------------------------------
02 02/01/15 AA 01/02/15 01/03/15
04 01/02/15 CC 01/03/15 15/03/15 01/04/15 15/04/15
01 01/01/15 XX 01/05/15
03 03/01/15 BB 01/03/15 01/04/15 01/06/15


Muchas gracias.

Neftali [Germán.Estévez] 22-03-2016 15:31:17

Diría que algo como esto te debería devolver lo que necesitas, pero también he de decir que estás solventando con una consulta "compleja" deficiencias en el diseño de la Base de Datos.
Para normalizar esta tabla, entiendo que deberías crear una tabla principal con los datos del cliente y una segunda tabla relacionada (1..N) con los datos de las pruebas (en este caso las fechas).

Código SQL [-]
SELECT NUM, MAX(FECHA) AS FECHA FROM (SELECT num,prueba1 AS FECHA FROM cencargos
UNION
SELECT num,prueba2 AS FECHA FROM cencargos
UNION
SELECT num,prueba3 AS FECHA FROM cencargos
UNION
SELECT num,prueba4 AS FECHA FROM cencargos)
GROUP BY NUM
ORDER BY FECHA ASC


La franja horaria es GMT +2. Ahora son las 12:54:24.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi