PIVOTAR TABLA SIN AGREGADOS

05/07/2004 - 14:49 por Jomaweb | Informe spam
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/defaul...S;q175574.

No puedo implementarlo.


Se agradece la ayuda

Preguntas similare

Leer las respuestas

#1 Jose Mariano Alvarez \(MUG\)
05/07/2004 - 15:33 | Informe spam
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" wrote in message
news:
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/defaul...S;q175574.

No puedo implementarlo.


Se agradece la ayuda





Respuesta Responder a este mensaje
#2 Jomaweb
06/07/2004 - 09:02 | Informe spam
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:
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" wrote in message
news:
> 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/defaul...S;q175574.
>
> No puedo implementarlo.
>
>
> Se agradece la ayuda
>
>
>
>
>


Respuesta Responder a este mensaje
#3 Carlos Sacristan
06/07/2004 - 09:12 | Informe spam
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.


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Jomaweb" escribió en el mensaje
news:#
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:
> 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" wrote in message
> news:
> > 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/defaul...S;q175574.
> >
> > No puedo implementarlo.
> >
> >
> > Se agradece la ayuda
> >
> >
> >
> >
> >
>
>


Respuesta Responder a este mensaje
#4 SqlRanger [MVP .NET]
06/07/2004 - 10:23 | Informe spam
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
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida