Una de SELECT

31/07/2007 - 12:39 por Jose Gregorio Alvarez Regalado | Informe spam
Tengo una tabla que tiene basicamente los siguientes campos

IdEvento
FechaEvento
NombreEvento

Necesito mostrar 10 registros de esa tabla (eso se hace con Top).
El problema esta en el orden.
Necesito mostrar todos los eventos a producirse mas recientemente es decir

WHERE FECHA >= GETDATE() ORDER BY FechaEvento ASC.

Pero si no hay suficientes registros necesito añadir al final los eventos
que se han producido mas recientemente

WHERE FECHA < GETDATE() ORDER BY FechaEvento DESC

Como puedo plasmar un Select así?


Gracias de antemano
 

Leer las respuestas

#1 Daniel A. Calvin
31/07/2007 - 14:34 | Informe spam
Hola

Seguramente hay algo mas optimo, pero puedes probar haciendo:

select * from
( select top 10 IdEvento,FechaEvento,NombreEvento from miTabla where WHERE
FECHA >= GETDATE() ORDER BY FechaEvento ASC
UNION
select top 10 IdEvento,FechaEvento,NombreEvento from miTabla where WHERE
FECHA < GETDATE() ORDER BY FechaEvento Desc

) tablita Order BY FechaEvento ASC

Solo debes reemplazar miTabla por el nombre real de la tabla.
Tablita es un nombre necesario para manejar el select desde la union.

Saludos

Daniel A. Calvin
MCP


"Jose Gregorio Alvarez Regalado" wrote:

Tengo una tabla que tiene basicamente los siguientes campos

IdEvento
FechaEvento
NombreEvento

Necesito mostrar 10 registros de esa tabla (eso se hace con Top).
El problema esta en el orden.
Necesito mostrar todos los eventos a producirse mas recientemente es decir

WHERE FECHA >= GETDATE() ORDER BY FechaEvento ASC.

Pero si no hay suficientes registros necesito añadir al final los eventos
que se han producido mas recientemente

WHERE FECHA < GETDATE() ORDER BY FechaEvento DESC

Como puedo plasmar un Select así?


Gracias de antemano





Preguntas similares