0

我需要计算每个员工的总休假时间。找一个员工很容易

SELECT      PRCo, Employee,  SUM(dbo.PRTH.Hours) AS TotalHrs, 
                         dbo.PREH.HireDate
FROM        A    
WHERE       A.ActiveYN = 'Y') AND (A.EarnCode IN (5249, 5257, 5258, 5279, 5286, 5296, 5309, 7711, 7733)) AND (A. PostDate <= CONVERT(DATETIME, '2013-07-15 00:00:00', 102)) AND (A.PostDate >= CONVERT(DATETIME, '2012-08-21 00:00:00', 102))
GROUP BY A.PRCo, A.Employee, A.PREH.HireDate
HAVING        (A.Employee = 1)

我很难找到所有员工,因为发布日期范围根据 Hiredate 彼此不同。. 我正在考虑使用光标或循环,但我确定它是如何工作的,或者它将如何工作。任何建议都会受到重视。我使用 t-sql。谢谢

4

2 回答 2

0

我希望这段代码会有所帮助:

创建表 #TEMP(EMPLOYEE_ID INT, POST_DATE DATETIME, HOURS INT) 插入 #TEMP 值(1,'8/21/2012',DATEDIFF(HH,'8/21/2012',GETDATE())) 插入 # TEMP VALUES(2,'5/7/2012',DATEDIFF(HH,'8/21/2012',GETDATE())) SELECT
PRCo, Employee, SUM(dbo.PRTH.Hours) AS TotalHrs, dbo.PREH。聘用日期


A JOIN #TEMP B ON A.Employee=B.Employee_Id WHERE
A.ActiveYN = 'Y') AND (A.EarnCode IN (5249, 5257, 5258, 5279, 5286, 5296, 5309, 7711, 7733)) 和(A. PostDate <= CONVERT(DATETIME, B.Post_Date, 102)) AND (A.PostDate >= CONVERT(DATETIME, B.Post_Date, 102)) 由 A.PRCo、A.Employee、A.PREH.HireDate 分组拥有( A.Employee
= 1)

于 2013-07-16T15:25:05.450 回答
0

您可以使用 Employee_Id 和 Post_Date 值创建一个临时表。在主查询中,将此临时表与员工 ID 连接并获取发布日期值。这是一个示例查询:

SELECT
PRCo, Employee, SUM(dbo.PRTH.Hours) AS TotalHrs, dbo.PREH.HireDate


A JOIN #TEMP B ON A.Employee=B.Employee_Id WHERE
A.ActiveYN = 'Y') AND (A.EarnCode IN (5249, 5257, 5258, 5279, 5286, 5296, 5309, 7711, 7733)) 和(A. PostDate <= CONVERT(DATETIME, B.Post_Date, 102)) AND (A.PostDate >= CONVERT(DATETIME, B.Post_Date, 102)) 由 A.PRCo、A.Employee、A.PREH.HireDate 分组拥有( A.Employee
= 1)

于 2013-07-16T14:23:58.123 回答