我在SQL Server中有一个名为PointingSystem的表(下面的截图),其中包含每日所有员工的指示。我需要根据这个公式计算每个员工的工作周期: sum(输出 - 输入):它的意思是(输出1 - 输入1)+(输出2 - 输入2)+ .... +(输出2 - 输入2)
根据这些计算,我们将数据加载到PeriodWorks表中,以总结每个员工当月所有日期的工作时间(下面的屏幕截图)。
我需要你的帮助来进行必要的SQL请求才能进行这些聚合(在加载数据之后,我对SSIS包没有问题)
如果您需要包含示例数据的csv文件,请私下与我联系。 enter image description here enter image description here
答案 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