SQL Server - Dejar registros de columna en filas

   
Vista:

Dejar registros de columna en filas

Publicado por kinetic_brain (67 intervenciones) el 03/06/2010 23:27:32
Hola maestros me pueden ayudar como realizar lo siguiente:

tengo una tabla de este tipo

RUT OOSS PROD IND F_INI F_INSTAL
26961238 000461059 5566532 0 20100528 20100331
26961238 000461059 5543657 8 20100518 20100331
33904762 000518377 0432195 0 20100602 20100522
33904762 000518377 0481500 8 20100522 20100522


Como podría ver los datos asi

RUT OOSS PROD1 PROD2 F_INI01 F_INI02 F_INSTAL
26961238 000461059 5566532 5543657 20100528 20100518 20100331
33904762 000518377 0432195 0481500 20100602 20100522 20100522

por favor..
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

RE:Dejar registros de columna en filas

Publicado por Isaias (3186 intervenciones) el 04/06/2010 00:55:24
Se puede, pero el problema es cuando tienes MUCHOS registros de un mismo RUT, porque entonces las columnas son infinitas y SQL SERVER te soporta hasta un numero determinado de columnas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dejar registros de columna en filas

Publicado por kinetic_brain (67 intervenciones) el 04/06/2010 03:25:57
Gracias Isaias

y como sería la estructura, podría limitar esa cantidad ya que aun debo filtrar por algunas condiciones se reduciria bastante.

por lo que entiendo siempre seria la misma cantidad de columnas, sino las filas son las que aumentarian.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

RE:Dejar registros de columna en filas

Publicado por Isaias (3186 intervenciones) el 04/06/2010 18:33:11
Veamos un ejemplo:

-- Creo mi tabla que contendra mis registros
create table T1 (
col1 varchar(10),
col2 varchar(10),
col3 varchar(10),
primary key (col1,col2)
)

-- Inserto los registros de prueba
insert into T1 (col1, col2, col3) values ('x1','y1','z1')
insert into T1 (col1, col2, col3) values ('x1','y2','z2')
insert into T1 (col1, col2, col3) values ('x1','y3','z3')
insert into T1 (col1, col2, col3) values ('x1','y4','z4')
insert into T1 (col1, col2, col3) values ('x2','y1','z5')
insert into T1 (col1, col2, col3) values ('x2','y2','z6')
insert into T1 (col1, col2, col3) values ('x2','y3','z7')
insert into T1 (col1, col2, col3) values ('x2','y4','z8')
insert into T1 (col1, col2, col3) values ('x3','y1','z9')

-- Creo mi select
select col1,
min(case when col2='y1' then col3 else null end) [y1],
min(case when col2='y2' then col3 else null end) [y2],
min(case when col2='y3' then col3 else null end) [y3],
min(case when col2='y4' then col3 else null end) [y4]
from T1
group by col1

-- Este es el resultado
col1 y1 y2 y3 y4
-----------------------------------
x1 z1 z2 z3 z4
x2 z5 z6 z7 z8
x3 z9 NULL NULL NULL
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dejar registros de columna en filas

Publicado por kinetic_brain (67 intervenciones) el 08/06/2010 23:50:13
Gracias Isaias me ha funcionado, esto es como crear una tabla pivot. muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar