2016-11-17 100 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;