在 SQL Server 中计算员工一个月的休假数
Posted
技术标签:
【中文标题】在 SQL Server 中计算员工一个月的休假数【英文标题】:Calculate number of leaves taken by Employee in a month in SQL Server 【发布时间】:2015-08-19 09:22:37 【问题描述】:如何?
Empid Leaveid Fromdate Todate No of days
100 L1 2008-05-10 2008-05-13 3
100 L2 2008-05-20 2008-05-21 1
100 L3 2008-05-25 2008-06-05 12
100 L4 2009-01-20 2009-01-22 2
100 L5 2009-02-14 2009-02-20 6
100 L6 2009-02-28 2009-02-28 1
【问题讨论】:
如果您的家庭作业/考试/corsework,请发布其余部分,我们也可以为您完成 :) 使用聚合函数 (SUM) 和 GROUP BY 子句 【参考方案1】:使用SUM
和GROUP BY
。
SELECT Empid, SUM([No of Days]) AS Days
FROM leavetable
GROUP BY Empid
在GROUP BY 和SUM 阅读更多内容。
这会给你:
Empid Days
100 25
或者,如果您的意思是计算员工休假的次数,请使用 Count
。
SELECT Empid, Count(Leaveid) AS LeaveTotal
FROM leavetable
GROUP BY Empid
在此处阅读更多信息COUNT。
这会给你:
Empid LeaveTotal
100 6
【讨论】:
我认为用户想要一个月内的叶子,而你给他总叶子或叶子总数。这不是要求。【参考方案2】:CREATE TABLE #EmpLeave (EmpId INT, LeaveID VARCHAR(5), FromDate Date, Todate Date, NoOfDays INT)
INSERT INTO #EmpLeave VALUES
(100, 'L1', '2008-05-10', '2008-05-13', 4),
(100, 'L2', '2008-05-20', '2008-05-21', 2),
(100, 'L3', '2008-05-25', '2008-06-05', 12),
(100, 'L4', '2009-01-20', '2009-01-22', 3),
(100, 'L5', '2009-02-14', '2009-02-20', 7),
(100, 'L6', '2009-02-28', '2009-02-28', 1)
;With CTE_leave AS (
select * from #EmpLeave where Month(FromDate) <> Month(ToDate) )
SELECT a.EMPID,DATENAME(MONTH,FromDate ) Month ,SUM(a.LeaveCount) LeaveTaken
FROM
(
SELECT C.EMPID,C.LeaveID, C.FromDate, DATEDIFF(DD,C.FromDate,EOMonth(FromDate) ) + 1 LeaveCount
FROM CTE_Leave C
UNION
SELECT C.EMPID, C.LeaveID, DATEADD(DD,1, EOMonth(FromDate)) fromDate, DATEDIFF(DD,DATEADD(DD,1, EOMonth(FromDate)), C.ToDate ) + 1 LeaveCount
FROM CTE_Leave C
UNION
SELECT EMPID, LeaveID, FromDate, DATEDIFF(DD, FromDate, Todate) + 1 LeaveCount FROM #EmpLeave where Month(FromDate) = Month(ToDate)
) a
group by a.EMPID, DATENAME(MONTH,FromDate )
@Anchalose 找到上述可能的解决方案。让我们知道可以解决您的问题。 请在发布您的查询时同时发布架构详细信息以及所需的结果,这将有助于我们更好地理解问题。
@Matt,请不要使用脏话,并尝试按要求发布解决方案。
【讨论】:
以上是关于在 SQL Server 中计算员工一个月的休假数的主要内容,如果未能解决你的问题,请参考以下文章
如何将不符合WHERE条件的联接表中的数据包含为空值(SQL)
SQL Server Management Studio 一个月的总销售额