Tuesday, October 26, 2010

Obtener resultado en string separado por comas

DECLARE @var AS NVARCHAR(100)


SELECT @var = COALESCE(convert(nvarchar,@var) + ',' , '') + CONVERT(nvarchar,tabla.id_calendario) FROM
(SELECT distinct(id_calendario) FROM calendario_procesos WHERE anio = 2010 AND tipo_nomina = 'PJ') tabla


SELECT @var

Friday, October 15, 2010

sp_executesql

SET @sql = 'SELECT @rpta = SUM(importe)
FROM   ' + @ls_tabla + '
WHERE  concepto = (SELECT valor FROM FPV5_EC_parametros_maestro WHERE id = 150)
       AND trabajador IN (SELECT DISTINCT(tra_cod)
                          FROM   #trabajadores)'


EXEC sp_executesql @sql,
     N'@rpta float output',
     @rpta = @hor_tra OUTPUT


SET @hor_tra = COALESCE(@hor_tra, 0)

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