SQL查询以计算工作时段并在另一个表中加载数据

时间:2018-04-19 16:37:12

标签: sql ssis

我在SQL Server中有一个名为PointingSystem的表(下面的截图),其中包含每日所有员工的指示。我需要根据这个公式计算每个员工的工作周期: sum(输出 - 输入):它的意思是(输出1 - 输入1)+(输出2 - 输入2)+ .... +(输出2 - 输入2)

根据这些计算,我们将数据加载到PeriodWorks表中,以总结每个员工当月所有日期的工作时间(下面的屏幕截图)。

我需要你的帮助来进行必要的SQL请求才能进行这些聚合(在加载数据之后,我对SSIS包没有问题)

如果您需要包含示例数据的csv文件,请私下与我联系。 enter image description here enter image description here

2 个答案:

答案 0 :(得分:0)

这应该有所帮助:

DECLARE @sql nvarchar(max)
SET @sql = 'SELECT '

DECLARE @output nvarchar(max)

SELECT
    @output = COALESCE(@output + '+', N'') + '[' + COLUMN_NAME + ']'
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME = 'PointingSystem' AND COLUMN_NAME LIKE '%output%'

SET @sql = @sql + @output + ' AS ''Output'', '


DECLARE @input nvarchar(max)

SELECT
    @input = COALESCE(@input + '+', N'') + '[' + COLUMN_NAME + ']'
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME = 'PointingSystem' AND COLUMN_NAME LIKE '%input%'

SET @sql = @sql + @input + ' AS ''Input'''

SET @sql = @sql + ',(' + @output + ')-(' + @input  +') as Period FROM PointingSystem'

EXEC(@sql)

答案 1 :(得分:-1)

试试这个。

SELECT ID_EMP, SUM(DATEDIFF(minute, DATE_IN, DATE_OUT))
FROM PointingSystem
GROUP BY ID_EMP