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

Preguntas similare

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





Respuesta Responder a este mensaje
#2 Daniel A. Calvin
31/07/2007 - 19:14 | Informe spam
Falto un top 10 en el primer select.

Es asi en realidad:

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

) tablita Order BY FechaEvento ASC



Daniel A. Calvin
MCP


"Daniel A. Calvin" wrote:

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
>
>
>
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida