2016-11-17 82 views
0

对于时钟机器。插入语句嵌套选择和内部连接

这将在午夜自动为表中的时钟记录设置,以便忘记在晚上忘记时钟的人。我想它插入一个时钟记录与它们的时钟时间

Employee表已经往常一样,雇员,employeeName,ClockTypeID ClockTypeID是一个快速的为员工当前状态引用(工作(1)或不工作( 2)) 钟表具有clockid为ClockTypeID,雇员,ClockDate,ClockTime

此刻我(以及我希望它提前做)

INSERT INTO dbo.Clock(EmployeeID, ClockTypeID, ClockDate, ClockTime) 
     SELECT EmployeeID, 2, getdate(), [Mininum clock time for current day for current employee] 
     FROM Employee 
     WHERE employee.ClockTypeID <> 2; 

谢谢!

编辑:位更多信息

Clock Table Data Employee Table Data

我想,当查询在晚上运行;在Clock TypeID为'1'的每个雇员的时钟表中插入一行(表示它们仍在计时) 我想要插入的行,我希望日期是当前日期和时间当天(时钟类型ID 1)中的第一个时钟的时间。 这将以他们的进入时间和日期与他们的输出时间和日期相同结束。这意味着系统会说他们当天工作了0小时,这应该是上级的标志,以便他们可以手动纠正它。

+0

样本数据和预期的结果将有助于解释你想做的事。 –

+0

已添加更多信息,希望这已经足够了! – hero9989

回答

0

你的描述建议是这样的:

INSERT INTO dbo.Clock(EmployeeID, ClockTypeID, ClockDate, ClockTime) 
    SELECT EmployeeID, 2, CAST(getdate() as DATE), min(clocktime) 
    FROM Employee 
    GROUP BY EmployeeId, CAST(getdate() as DATE) 
    HAVING SUM(CASE WHEN ClockTypeID = 1 THEN 1 
        WHEN ClockTypeId = 2 THEN -1 
        ELSE 0 
       END) > 0;