Wednesday, October 13, 2010

Obtener diferentes valores de un mismo campo - Múltiples Joins

Obtener diferentes valores de un mismo campo - Múltiples Joins

SELECT ROW_NUMBER() OVER(ORDER BY t.trabajador) AS 'nro',
       t.trabajador,
       CASE 
            WHEN t.sexo = 1 THEN 'M'
            ELSE 'F'
       END AS sexo,
       SUM(a.importe) AS importe_1165,
       SUM(b.importe) AS importe_1006,
       SUM(c.importe) AS importe_601
       
FROM   trabajadores t
       INNER JOIN (
                SELECT trabajador,
                       concepto,
                       SUM(importe) AS importe
                FROM   transacciones_ns
                WHERE  compania = 'A'
                       AND clase_nomina = 'AD'
                       AND id_calendario = 209
                       AND concepto = 1165
                       AND trabajador = 90
                GROUP BY
                       trabajador,
                       concepto
            ) a
            ON  a.trabajador = t.trabajador
       INNER JOIN (
                SELECT trabajador,
                       concepto,
                       SUM(importe) AS importe
                FROM   transacciones_ns
                WHERE  compania = 'A'
                       AND clase_nomina = 'AD'
                       AND id_calendario = 209
                       AND concepto = 1006
                       AND trabajador = 90
                GROUP BY
                       trabajador,
                       concepto
            ) b
            ON  b.trabajador = t.trabajador
            INNER JOIN (
                SELECT trabajador,
                       concepto,
                       SUM(importe) AS importe
                FROM   transacciones_ns
                WHERE  compania = 'A'
                       AND clase_nomina = 'AD'
                       AND id_calendario = 209
                       AND concepto = 601
                       AND trabajador = 90
                GROUP BY
                       trabajador,
                       concepto
            ) c
            ON  c.trabajador = t.trabajador
GROUP BY 
t.trabajador,
sexo
                
También se puede revisar el artículo siguiente:
http://efreedom.com/Question/1-1172926/SQL-Issue-Calculating-Percentages-Using-Multiple-Joins-Table                
                

No comments:

Post a Comment