我想根据用户什么时间将一个员工的时间数据拆分为多个行。对于这个例子,如果他们在早上7点之前开始计时,那么之前的任何数据将被分成一个新行的数据和上午7点和之后的是另一行。以下是一些具有所需结果集的数据示例。这是为了帮助计算加班。如果他们自己设定变速之前出现那么时间就是OT支付将时间数据拆分为多行
Create Table TimeData(
[ID] [int] IDENTITY(1,1) NOT NULL,
[EmployeeID] int NULL,
[Date] date NULL,
[TimeIn] time NULL,
[TimeOut] time Null,
)
Insert Into TimeData (EmployeeID,Date,Timein,TimeOut)
Values (100,'9/5/2017','06:00','15:00')
结果集
(100, '9/5/2017年', '06:00', '07:00')
(100, '9/5/2017年', '07:00', '15:00')低于
联盟所有建议我指出了正确的方向,我想出了这个查询集为在上午7点之前打入的员工创建新的时间记录,然后更新原始记录。
BEGIN
INSERT INTO Timedata(EmployeeID,Date,TimeIn,TimeOut)
SELECT
[EmployeeID],
[Date],
[TimeIn] AS [Time], '7:00'
FROM
TimeData
WHERE
[TimeIn] < '07:00:00'
END
BEGIN
UPDATE TimeData Set TimeIn = '07:00' WHERE TimeIN < '07:00' AND TimeOut <> '7:00'
END
但是为什么?这背后的商业原因是什么?这些转变吗?不是我的DV顺便说一句。 – scsimon
DV是绝对没有显示研究工作。 –
这是为了帮助计算加班。如果他们在他们设定的转移之前出现,那么这个时间就是OT付款。实际的存储过程要复杂得多。有一天会有多个时间条目,总小时数将被计算出来,但我只是需要一些关于如何清除这个冲突的集体脑力冲突。我不认为它值得一个DV,但如果它得到DV'd,我仍然得到来自社区的帮助,它仍然非常感谢 – BrianMichaels