Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 计算月休假余额_Sql Server - Fatal编程技术网

Sql server 计算月休假余额

Sql server 计算月休假余额,sql-server,Sql Server,我有一个表结构,可以获取员工的休假详细信息。我想计算员工每个月的休假次数以及休假类型 CREATE TABLE Employee ( EmpID Int Primary Key, Name Varchar(25) ); CREATE TABLE LeaveBalance ( BalanceID Int Primary Key, Balance Int, EmpID Int FOREIGN KEY REFERENCES Employee(EmpID) ); CREATE TABLE Leave

我有一个表结构,可以获取员工的休假详细信息。我想计算员工每个月的休假次数以及休假类型

CREATE TABLE Employee
(
EmpID Int Primary Key,
Name Varchar(25)
);

CREATE TABLE LeaveBalance
(
BalanceID Int Primary Key,
Balance Int,
EmpID Int FOREIGN KEY REFERENCES Employee(EmpID)
);

CREATE TABLE Leave
(
ID Int,
LeaveType Varchar(25),
AppliedOn Date,
ApprovedOn Date,
EmpID Int FOREIGN KEY REFERENCES Employee(EmpID),
BalanceID Int FOREIGN KEY REFERENCES LeaveBalance(BalanceID)

);



INSERT INTO Employee VALUES (1, 'Erick')
INSERT INTO Employee VALUES (2, 'John')


INSERT INTO LeaveBalance VALUES (1, 25, 1)
INSERT INTO LeaveBalance VALUES (2, 15, 2)

INSERT INTO Leave VALUES (1, 'Sick Leave', '2017-12-21', '2017-12-22', 1, 1)
INSERT INTO Leave VALUES (2, 'Casual Leave', '2017-12-26', '2017-12-26', 1, 1)
INSERT INTO Leave VALUES (3, 'Sick Leave', '2018-01-11', '2018-01-11', 1, 1)
INSERT INTO Leave VALUES (4, 'Casual Leave', '2017-12-26', '2017-12-26', 2, 2)
INSERT INTO Leave VALUES (5, 'Earned Leave', '2018-01-11', '2018-01-11', 2, 2)
它应该很简单(假设您选择的是申请日期,而不是批准日期):

它应该很简单(假设您选择的是申请日期,而不是批准日期):


当你说“获得假期”时,你的意思是“休假”?@M.Ali是的,你能发布你迄今为止的尝试吗?另外,您在这里的预期输出是什么?你有不同的“病假”和“临时假”的例子,就你的目标而言,这些例子是相同的吗?当你说“获得假期”时,你的意思是“休假”?@M.Ali是的,准确地说,你能发布你迄今为止尝试过的吗?另外,您在这里的预期输出是什么?你有不同的“病假”和“临时假”的例子,就你的目标而言,它们是相同的吗??
SELECT 
      EmpID
    , LeaveType 
    , YEAR(AppliedOn)   AS [Year]
    , MONTH(AppliedOn)  AS [Month]
    , Count(*)          AS [LeaveTaken]
FROM #Leave
GROUP BY EmpID
    , LeaveType 
    , YEAR(AppliedOn)   
    , MONTH(AppliedOn)