Inicio > Transact-SQL > UNPIVOT – Sql Server (Pasar de columnas a filas)

UNPIVOT – Sql Server (Pasar de columnas a filas)


  Para mostrar cómo funciona UNPIVOT creamos la  siguiente tablas

CREATE TABLE [dbo].[TipoCambio](
 [ano_mon] [int] DEFAULT ((0)),
 [mes_mon] [int] DEFAULT ((0)),
 [com_01] [decimal](18, 2) DEFAULT ((0)),
 [vta_01] [decimal](18, 2) DEFAULT ((0)),
 [com_02] [decimal](18, 2) DEFAULT ((0)),
 [vta_02] [decimal](18, 2) DEFAULT ((0)),
 [com_03] [decimal](18, 2) DEFAULT ((0)),
 [vta_03] [decimal](18, 2) DEFAULT ((0)),
 [com_04] [decimal](18, 2) DEFAULT ((0)),
 [vta_04] [decimal](18, 2) DEFAULT ((0))
) ON [PRIMARY] 

con este ejemplo mostraremos como pasar las columnas a filas:

Supongamos que tenemos una tabla tipo de cambio con los campos  año,  mes  y 2 columnas por cada día (valor de compra y valor de venta)  y queremos mostrar esta tabla en filas.

— Te muetra un tabla con el año , mes , día (Unpivot de compras)
SELECT ano_mon, mes_mon,dia, compra
FROM
(SELECT ano_mon,mes_mon ,com_01 ,com_02,com_03 FROM TipoCambio WHERE ano_mon = 2008 and mes_mon = 1) P
UNPIVOT (compra FOR dia IN (com_01 ,com_02,com_03)) AS Unpvt
GO
 
— Te muetra un tabla con el año , mes , día (Unpivot de ventas)
SELECT ano_mon, mes_mon,dia,venta
FROM
(SELECT ano_mon,mes_mon , vta_01 , vta_02 , vta_03 FROM TipoCambio WHERE ano_mon = 2008 and mes_mon = 1) P
UNPIVOT(venta FOR dia IN (vta_01 , vta_02 , vta_03)) AS Unpvt;
GO

Con este ejemplo se muestran la columna de compra y venta en una sola tabla :

SELECT * FROM(
 SELECT ano_mon, mes_mon,diac,diav, compra ,venta
  FROM
  (SELECT ano_mon,mes_mon ,com_01 ,com_02,com_03,vta_01 , vta_02 , vta_03 FROM TipoCambio WHERE ano_mon = 2008 and mes_mon = 1) P
  UNPIVOT (compra FOR diac IN (com_01 ,com_02,com_03))AS compra
  UNPIVOT (venta FOR diav IN (vta_01 , vta_02 , vta_03))AS venta) AS RESULTADO
WHERE SUBSTRING(diac,5,2) = SUBSTRING(diav,5,2)

Categorías:Transact-SQL
  1. DVD28
    19 marzo 2012 a las 12:56 pm

    tengo un problemas con una tabla que tiene dos columnas una es la descripcion y la otra el valor ejemplo

    Descripcion Monto
    fondo Pension 100
    salud 200
    desahucio 150
    imp unico 200

    esto necesito pasarlo de la siguiente forma:

    fodo de pesion| salud | desahucio | imp unico
    100 200 150 200

    de que forma puedo realizarlo estare atento a sus comentarios!!!

  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: