Subscribe Us

martes, 21 de agosto de 2012

SQL SERVER Filas a Columnas

Bueno tenia un dilema, en como pasar mis datos de filas a columnas, ya que si lo presento como filas ocuparía bastante espacio en un reporte.

Aqui un problema y la solucion al mismo, aplicando PIVOT..

Empleado DiaFalta NumeroDias, Valor
pedro vacaciones 3 30
pedro Incapacidad 1 5


empleado vacaciones incapacidad
pedro 3 1


Solución

1. La primera es la forma como nos tocaba hacerlo en el SQL Server 2000 y aún puede ser una solución válida para el SQL 2005 y 2008.

Código:

SELECT Empleado,
SUM(CASE DiaFalta
    WHEN 'Vacaciones'
    THEN NumeroDias
    ELSE 0 END) Vacaciones,  
SUM(CASE DiaFalta
    WHEN 'Incapacidad'
    THEN NumeroDias
    ELSE 0 END) Incapacidad
FROM DiasFaltas
GROUP BY Empleado




2. y la segunda usando la sentencia PIVOT que fue incorporada desde la versión 2005 del SQL Server.

Código:

SELECT Empleado,
        [Vacaciones],
        [Incapacidad]
FROM (
        SELECT Empleado,
               DiaFalta,
               NumeroDias
        FROM DiasFaltas) V
        PIVOT ( SUM(NumeroDias)
        FOR DiaFalta IN ([Vacaciones], [Incapacidad])
        ) AS PV





Otros ejemplos para solucion.

http://msdn.microsoft.com/es-es/library/bb972215.aspx
http://rahsuarez.wordpress.com/2010/08/31/unpivot-sql-server-pasar-de-columnas-a-filas/

    Choose :
  • OR
  • To comment