Transformar filas en columnas

20/07/2005 - 18:45 por Tomás | Informe spam
Hola a todos.

Supongo que esta consulta ya se habrá realizado antes, pero he buscado
información y no consigo resolver lo que necesito, que por otra parte no se
si será posible.

Tengo la siguiente tabla:
CREATE TABLE [P] (
[Codigo] [char] (12) ,
[Mes] [int] ,
[Importe] [numeric](18, 2) ,
CONSTRAINT [PK_P] PRIMARY KEY NONCLUSTERED ([Codigo],[Mes]) ON [PRIMARY]
) ON [PRIMARY]

Con la siguiente información:
INSERT INTO [dbo].[P] VALUES('6000000',4,100.00)
INSERT INTO [dbo].[P] VALUES('6000000',6,100.00)
INSERT INTO [dbo].[P] VALUES('6000000',8,100.00)
INSERT INTO [dbo].[P] VALUES('6100000',1,500.00)
INSERT INTO [dbo].[P] VALUES('6100000',2,500.00)
INSERT INTO [dbo].[P] VALUES('6100000',3,500.00)
INSERT INTO [dbo].[P] VALUES('6200000',1,1000.00)
INSERT INTO [dbo].[P] VALUES('6200000',2,1000.00)
INSERT INTO [dbo].[P] VALUES('6200000',3,1000.00)

Y así, unos cuantos miles de registros.

Y quisiera obtener un informe con la siguiente cabecera:
CODIGO MES-1 MES-2 MES-3 MES-4 MES-5 MES-6 MES-7 MES-8 MES-9 MES-10 MES-11
MES-12 TOTAL

6000000 0 0 0 100.00 0 100.00
0 100.00 0 0 0 0 300.00
6100000 500.00 500.00 500.00 0 0 0
0 0 0 0 0 0 1,500.00
6200000 1,00.00 1,000.001,000.00 0 0 0 0
0 0 0 0 0 3,000.00

En este ejemplo se mostraría cero en aquellas columnas que no hay datos en
la tabla para el mes correspondiente.

Cualquier idea será bienvenida.

Gracias por anticipado.

Tomás.

Preguntas similare

Leer las respuestas

#1 Eleazar
20/07/2005 - 19:10 | Informe spam
IZU! seria una buena noticia si existe alguna instruccion en sql, puesto que
yo lo resolvi a mano
1.- crear una tabla temporal tal como sera el resultado( CODIGO MES-1 MES-2
MES-3 MES-4 MES-5 MES-6 MES-7 MES-8 MES-9 MES-10 MES-11 MES-12 TOTAL)
2.- insertar solo el codigo mes en la tabla temporal
3.- actualizar los meses (de la tabla temporal) columna por columna

"Tomás" escribió en el mensaje
news:
Hola a todos.

Supongo que esta consulta ya se habrá realizado antes, pero he buscado
información y no consigo resolver lo que necesito, que por otra parte no


se
si será posible.

Tengo la siguiente tabla:
CREATE TABLE [P] (
[Codigo] [char] (12) ,
[Mes] [int] ,
[Importe] [numeric](18, 2) ,
CONSTRAINT [PK_P] PRIMARY KEY NONCLUSTERED ([Codigo],[Mes]) ON [PRIMARY]
) ON [PRIMARY]

Con la siguiente información:
INSERT INTO [dbo].[P] VALUES('6000000',4,100.00)
INSERT INTO [dbo].[P] VALUES('6000000',6,100.00)
INSERT INTO [dbo].[P] VALUES('6000000',8,100.00)
INSERT INTO [dbo].[P] VALUES('6100000',1,500.00)
INSERT INTO [dbo].[P] VALUES('6100000',2,500.00)
INSERT INTO [dbo].[P] VALUES('6100000',3,500.00)
INSERT INTO [dbo].[P] VALUES('6200000',1,1000.00)
INSERT INTO [dbo].[P] VALUES('6200000',2,1000.00)
INSERT INTO [dbo].[P] VALUES('6200000',3,1000.00)

Y así, unos cuantos miles de registros.

Y quisiera obtener un informe con la siguiente cabecera:
CODIGO MES-1 MES-2 MES-3 MES-4 MES-5 MES-6 MES-7 MES-8 MES-9 MES-10


MES-11
MES-12 TOTAL


-
6000000 0 0 0 100.00 0 100.00
0 100.00 0 0 0 0 300.00
6100000 500.00 500.00 500.00 0 0 0
0 0 0 0 0 0 1,500.00
6200000 1,00.00 1,000.001,000.00 0 0 0


0
0 0 0 0 0 3,000.00

En este ejemplo se mostraría cero en aquellas columnas que no hay datos en
la tabla para el mes correspondiente.

Cualquier idea será bienvenida.

Gracias por anticipado.

Tomás.


Respuesta Responder a este mensaje
#2 Isaias
20/07/2005 - 20:04 | Informe spam
Esto es mas facil de lo que parece:

Lean este articulo:

http://support.microsoft.com/defaul...US;q175574
Respuesta Responder a este mensaje
#3 Antonio Ortiz R
21/07/2005 - 00:57 | Informe spam
vean por el tema de MDX


Antonio Ortiz
asesor en sistemas
ant(a)aortiz.net
www.aortiz.net
www.progvisual.com


"Tomás" escribió en el mensaje
news:
Hola a todos.

Supongo que esta consulta ya se habrá realizado antes, pero he buscado
información y no consigo resolver lo que necesito, que por otra parte no


se
si será posible.

Tengo la siguiente tabla:
CREATE TABLE [P] (
[Codigo] [char] (12) ,
[Mes] [int] ,
[Importe] [numeric](18, 2) ,
CONSTRAINT [PK_P] PRIMARY KEY NONCLUSTERED ([Codigo],[Mes]) ON [PRIMARY]
) ON [PRIMARY]

Con la siguiente información:
INSERT INTO [dbo].[P] VALUES('6000000',4,100.00)
INSERT INTO [dbo].[P] VALUES('6000000',6,100.00)
INSERT INTO [dbo].[P] VALUES('6000000',8,100.00)
INSERT INTO [dbo].[P] VALUES('6100000',1,500.00)
INSERT INTO [dbo].[P] VALUES('6100000',2,500.00)
INSERT INTO [dbo].[P] VALUES('6100000',3,500.00)
INSERT INTO [dbo].[P] VALUES('6200000',1,1000.00)
INSERT INTO [dbo].[P] VALUES('6200000',2,1000.00)
INSERT INTO [dbo].[P] VALUES('6200000',3,1000.00)

Y así, unos cuantos miles de registros.

Y quisiera obtener un informe con la siguiente cabecera:
CODIGO MES-1 MES-2 MES-3 MES-4 MES-5 MES-6 MES-7 MES-8 MES-9 MES-10


MES-11
MES-12 TOTAL


-
6000000 0 0 0 100.00 0 100.00
0 100.00 0 0 0 0 300.00
6100000 500.00 500.00 500.00 0 0 0
0 0 0 0 0 0 1,500.00
6200000 1,00.00 1,000.001,000.00 0 0 0


0
0 0 0 0 0 3,000.00

En este ejemplo se mostraría cero en aquellas columnas que no hay datos en
la tabla para el mes correspondiente.

Cualquier idea será bienvenida.

Gracias por anticipado.

Tomás.


Respuesta Responder a este mensaje
#4 Maxi
21/07/2005 - 01:34 | Informe spam
Hola, un solo comentario: en la version 2005 esto se hace con una sola
instruccion llamada Pïvot :-)


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Tomás" escribió en el mensaje
news:
Hola a todos.

Supongo que esta consulta ya se habrá realizado antes, pero he buscado
información y no consigo resolver lo que necesito, que por otra parte no
se si será posible.

Tengo la siguiente tabla:
CREATE TABLE [P] (
[Codigo] [char] (12) ,
[Mes] [int] ,
[Importe] [numeric](18, 2) ,
CONSTRAINT [PK_P] PRIMARY KEY NONCLUSTERED ([Codigo],[Mes]) ON [PRIMARY]
) ON [PRIMARY]

Con la siguiente información:
INSERT INTO [dbo].[P] VALUES('6000000',4,100.00)
INSERT INTO [dbo].[P] VALUES('6000000',6,100.00)
INSERT INTO [dbo].[P] VALUES('6000000',8,100.00)
INSERT INTO [dbo].[P] VALUES('6100000',1,500.00)
INSERT INTO [dbo].[P] VALUES('6100000',2,500.00)
INSERT INTO [dbo].[P] VALUES('6100000',3,500.00)
INSERT INTO [dbo].[P] VALUES('6200000',1,1000.00)
INSERT INTO [dbo].[P] VALUES('6200000',2,1000.00)
INSERT INTO [dbo].[P] VALUES('6200000',3,1000.00)

Y así, unos cuantos miles de registros.

Y quisiera obtener un informe con la siguiente cabecera:
CODIGO MES-1 MES-2 MES-3 MES-4 MES-5 MES-6 MES-7 MES-8 MES-9 MES-10 MES-11
MES-12 TOTAL

6000000 0 0 0 100.00 0 100.00 0
100.00 0 0 0 0 300.00
6100000 500.00 500.00 500.00 0 0 0 0
0 0 0 0 0 1,500.00
6200000 1,00.00 1,000.001,000.00 0 0 0
0 0 0 0 0 0 3,000.00

En este ejemplo se mostraría cero en aquellas columnas que no hay datos en
la tabla para el mes correspondiente.

Cualquier idea será bienvenida.

Gracias por anticipado.

Tomás.

Respuesta Responder a este mensaje
#5 Tomás
22/07/2005 - 12:01 | Informe spam
Muchas gracias por la información.

Un saludo.

Tomás.

"Isaias" escribió en el mensaje
news:
Esto es mas facil de lo que parece:

Lean este articulo:

http://support.microsoft.com/defaul...US;q175574
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida