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
Tuesday, October 26, 2010
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)
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
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
Subscribe to:
Posts (Atom)