Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

ordenar una misma columna una consulta

Estas en el tema de ordenar una misma columna una consulta en el foro de SQL Server en Foros del Web. Hola , espero que esten bien. Tengo 2 semanas manejando SQL y mi situacion es la siguiente: Tengo una tabla llamada Products y la columna ...
  #1 (permalink)  
Antiguo 18/02/2008, 15:00
 
Fecha de Ingreso: febrero-2008
Mensajes: 6
Antigüedad: 16 años, 3 meses
Puntos: 0
ordenar una misma columna una consulta

Hola , espero que esten bien.

Tengo 2 semanas manejando SQL y mi situacion es la siguiente:

Tengo una tabla llamada Products y la columna llamada ProductID. Quiero desplegar esta columna en forma ascendente y descente en UNA sola consulta y que me despliegue una columna enseguida de otra. Lo que he hecho es esto pero me marca un error:

use Northwind
select
(select TOP 5 CategoryID from products order by CategoryID DESC),
(select TOP 5 CategoryID from products order by CategoryID ASC)
GO



espero y alguien me pueda ayudar, se los agradecerìa mucho
Gracias
  #2 (permalink)  
Antiguo 18/02/2008, 15:25
 
Fecha de Ingreso: febrero-2008
Mensajes: 6
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: ordenar una misma columna una consulta

Si alguien me pudiera ayudar por favor !!!
  #3 (permalink)  
Antiguo 18/02/2008, 15:29
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Re: ordenar una misma columna una consulta

No se comprende muy bien, que es lo que deseas hacer, pero en todo caso utiliza UNION

(select TOP 5 CategoryID from products order by CategoryID DESC)
UNION
(select TOP 5 CategoryID from products order by CategoryID ASC)
  #4 (permalink)  
Antiguo 18/02/2008, 15:37
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 4 meses
Puntos: 7
Re: ordenar una misma columna una consulta

El problema es que en tu consulta no hay un elemento que relacione una columna con la otra. La relación que buscas es la posición ordinal ¿no?. Entonces, esto se soluciona encontrando la posición ordinal para ambos resultados y usar este valor como Id para vincularlos.
Con SQL Server 2000, lo solucionas usando tablas de paso. Como el juego de resultados es reducidísimo, lo mejor es usar variables de tabla:
Código:
--Tablas que contendrán los resultados. Las columnas
--IDENTITY se usaran para vincular ambos
DECLARE @topDesc TABLE(Id SMALLINT IDENTITY(1,1), CategoryID int)
DECLARE @topAsc TABLE(Id SMALLINT IDENTITY(1,1), CategoryID int)
--Obtener valores ascendentes
INSERT INTO @topAsc(CategoryID)
SELECT      TOP 5 CategoryID 
FROM        products
ORDER BY    num ASC
--Obtener valores descendentes
INSERT INTO @topDesc(CategoryID)
SELECT TOP 5 CategoryID 
FROM        products
ORDER BY    num DESC
--Vincular ambos resultados
SELECT      a.CategoryID AS CategoryIdAsc, d.CategoryID AS CategoryIdDesc
FROM        @topAsc AS a
INNER JOIN  @topDesc AS d
         ON a.Id = d.Id 
Con SQL Server 2005 es más fácil:
Código:
SELECT      a.CategoryID AS CategoryIdAsc, d.CategoryID AS CategoryIdDesc
FROM        (
            SELECT  TOP 5 CategoryID,
                    ROW_NUMBER() OVER(ORDER BY CategoryID ASC) AS Id
            FROM    products
        ) AS a
INNER JOIN  (
            SELECT  TOP 5 CategoryID,
                    ROW_NUMBER() OVER(ORDER BY CategoryID DESC) AS Id
            FROM    products
        ) AS d
        ON a.Id = d.Id 

Última edición por Beakdan; 18/02/2008 a las 15:47
  #5 (permalink)  
Antiguo 18/02/2008, 15:38
 
Fecha de Ingreso: febrero-2008
Mensajes: 6
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: ordenar una misma columna una consulta

osea lo que deseo es que me aparezca la columna CategoryID ordenada Ascendentemente y a lado de ella la misma columna CategoryID pero ordenada Descendentemente todo en una UNICA consulta, mas o menos asi:


CategoryID CategoryID

1 5
2 4
3 3
4 2
5 1


, si utilizo el UNION , me aperece todo en una misma columna

Gracias
  #6 (permalink)  
Antiguo 18/02/2008, 15:53
 
Fecha de Ingreso: febrero-2008
Mensajes: 6
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: ordenar una misma columna una consulta

ok muchas gracias !!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:15.