hilpers


  hilpers > microsoft.* > microsoft.sqlserver > 07/2004

 #1  
05-07-2004, 13:49
Jomaweb
Hola:
Anteriormente ya pregunté acerca de la posibilidad de convertir las columnas
en filas y las filas en columnas. Lo que habitualmente se denomina
"pivotar"o "rotar" una tabla. (ver el topic: DAR LA VUELTA A UNA TABLA)

Mi problema es que los ejemplos que me dieron solamente sirven para el caso
de consultas que presenten datos sumarizados pero ese no es el caso. En
ningún momento se van a extraer totales o cálculos sobre los datos porque
son simples datos de texto.

Este sería el ejemplo de tabla:

CLIENTE, RECIBO, ARTICULO, FECHA
Paco 1 .................
Paco 2 ..........
Paco 3 ......
Pedro 1 ..

y tras rotar, debería mostrar:

Paco - recibo1- tornillos - 12/12/99 - recibo 2 - tuercas - 15/4/00 -recibo
3 - clavos - 23/6/04
Pedro.........

No hay sumas, ni totales, ni count, ni agregados, ni nada. SOLAMENTE ROTAR
LA TABLA.

Todos los ejemplos consultados utilizan agragados o sumas. Como por ejemplo
este:
http://support.microsoft.com/default...;EN-US;q175574.

No puedo implementarlo.


Se agradece la ayuda
 #2  
05-07-2004, 14:33
Jose Mariano Alvarez \(MUG\)
No tienes tal cosa en el SQL.
Si lo quieres "programar" deberás hacer algo muy variable con muchos case o
sentencias dinámicas.

Por que no lo haces en el cliente ?

--------------------------------------------------
Jose Mariano Alvarez
jose (.) alvarez * *Arroba* * mug (.) org (.) ar
Comunidad de base de datos
Grupo de Usuarios Microsoft
www.mug.org.ar
--------------------------------------------------


..
"Jomaweb" <brooce> wrote in message
news:3688
> Hola:
> Anteriormente ya pregunté acerca de la posibilidad de convertir las

columnas
> en filas y las filas en columnas. Lo que habitualmente se denomina
> "pivotar"o "rotar" una tabla. (ver el topic: DAR LA VUELTA A UNA

TABLA)
>
> Mi problema es que los ejemplos que me dieron solamente sirven para el

caso
> de consultas que presenten datos sumarizados pero ese no es el caso. En
> ningún momento se van a extraer totales o cálculos sobre los datos porque
> son simples datos de texto.
>
> Este sería el ejemplo de tabla:
>
> CLIENTE, RECIBO, ARTICULO, FECHA
> Paco 1 .................
> Paco 2 ..........
> Paco 3 ......
> Pedro 1 ..
>
> y tras rotar, debería mostrar:
>
> Paco - recibo1- tornillos - 12/12/99 - recibo 2 - tuercas -

15/4/00 -recibo
[..]
 #3  
06-07-2004, 08:02
Jomaweb
Hombre, me hacía ilusión tener un procedimiento almacenado.
Yo soy así, me busco la forma difícil.

¿no está previsto en Yukon?¿verdad?


"Jose Mariano Alvarez (MUG)" <jose.alvarez * *Arroba* * mug.org.ar> escribió
en el mensaje news:a396
[..]
 #4  
06-07-2004, 08:12
Carlos Sacristan
Jonaweb, no siempre es mejor hacerlo en el gestor. Ten en cuenta que
TSQL no es un lenguaje de programación, y en muchas ocasiones le va a costar
realizar ese tipo de operaciones más que hacerlo en el cliente.

Respecto a la otra pregunta, hay buenas noticias: se podrán hacer ese
tipo de transformaciones en Yukon.
 #5  
06-07-2004, 09:23
SqlRanger [MVP .NET]
Una forma sencilla de hacer esto en el servidor es usar el motor de Access,
el Jet, como intermediario, para que haga la pivotación.

Estos serían los pasos a seguir:

1) Crear una base de datos de Access en el servidor donde se ejecuta SQL
Server
2) Crear una tabla vinculada por ODBC a la tabla de SQL Server en la base de
datos de Access
3) Crear una consulta de referencias cruzadas en Access, tomando como base
la tabla vinculada
4) Crear, en SQL Server, un servidor vinculado a la base de datos de Access
5) Ejecutar la siguiente sentencia en SQL Server:

SELECT * FROM OPENQUERY( ServidorVinculadoAccess, 'SELECT * FROM
ConsultaReferenciasCruzadas')

También podemos usar el motor jet en el cliente para hacer lo mismo y así
evitarle al servidor hacer todo el trabajo. En este caso tenemos en el
cliente:

1) La base de datos de Access
2) Una tabla vinculada por ODBC a la tabla de SQL Server en la base de datos
de Access
3) una consulta de referencias cruzadas en Access, tomando como base la
tabla vinculada
4) En vez de ejecutar la consulta sobre SQL Server, la ejecutamos sobre la
base de datos local de Access:

SELECT * FROM ConsultaReferenciasCruzadas


Saludos:

Jesús López

MVP .net
Temas Similares
pivotar

Hola buenos dias me gustaria conocer como puedo pivotar una misma columna 2 veces en una query. Esplico mejor: Pivotar una vez para que me sume las cantidades, y pivotar una...

Pivotar en SQL 2000.

Hola a todos, Tengo una tabla con la siguiente estructura: Proveedor, RefProv, EAN, Descripcion, Precio, PrecioNeto En ella importo datos de las tarifas de diferentes...

pivotar solo media tabla

Hola Sé como pivotar una tabla entera pero...¿que pasa cuando lo que quiero es pivotar solo una parte de la tabla? La tabla es la siguiente: cliente banco fecha...

Pivotar

Muy buenas. Tengo una duda y voy a intentar explicarla con un ejemplo: Tengo 2 tablas y quiero cruzarlas para ver las diferencias que tienen, pero el problema es que su...

Pasar de una tabla de Clientes a otra cambios y agregados

Todos las semanas me pasan la tabla de Clientes, que tiene unos 12 campos (IDCliente, Nombre, Telefono, Direccion, etc.), son unos 7000 clientes, y yo me tengo que fijar...


La franja horaria es GMT. Ahora son las 07:55. | Privacy Policy