El siguiente script ayuda a pasar información que está en columnas en filas, respetando el nombre de la columna y su valor, para ello se deben convertir todos los valores de las n columnas en un solo tipo de dato para que la función UNPIVOT funcione correctamente.
se crea la tabla como variable:
DECLARE
@T1 AS TABLE (ID INT, NAME VARCHAR(30), FECHA DATE, OTRA VARCHAR(MAX))
INSERT
INTO @T1
SELECT
1, 'OMAR', GETDATE(), 'xxxxxxxxxxx' UNION ALL
SELECT
2, 'MANUEL', '2016-05-05', '*************';
select * from @T1;
el resultado es el siguiente:
Ahora lo que se quiere es pasar esos registros con las columnas en filas.
así:
para lograrlo se ejecuta la función UNPIVOT Asi:
WITH TABLA AS
(
-- Common table
Expression para convertir todos los datos en un solo tipo
SELECT
ID
,NAME
= CONVERT(VARCHAR(MAX), Name)
,FECHA =
CONVERT(VARCHAR(MAX), FECHA)
,OTRA = CONVERT(VARCHAR(MAX), OTRA)
FROM
@T1
)
SELECT
ID
,columna
,valor
FROM
TABLA
unpivot
(
valor for
columna in ([name],[fecha],[otra])
) as unpvt
esto fue un ejemplo simple.
No hay comentarios.:
Publicar un comentario