sql 统计问题
有以下两张表:员工表
CREATE TABLE [dbo].[tblEmployee] (
员工编号 [EmployeeID] [int] IDENTITY (1, 1) NOT NULL ,
姓名 [Name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
登陆名 [LoginName] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
密码 [Password] [binary] (20) NULL ,
EMAIL [Email] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
部门编号 [DeptID] [int] NULL ,
基本工资 [BasicSalary] [int] NULL ,
备注 [Title] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
电话 [Telephone] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
注册日期 [OnboardDate] [datetime] NOT NULL ,
自我介绍 [SelfIntro] [nvarchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
年假剩余小时数 [VacationRemain] [int] NULL ,
用户级别 [EmployeeLevel] [int] NULL ,
照片 [PhotoImage] [image] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
加班申请表
CREATE TABLE [dbo].[tblOvertime] (
加班申请编号[OvertimeID] [int] IDENTITY (1, 1) NOT NULL ,
申请员工编号[EmployeeID] [int] NOT NULL ,
审批者编号[ApproverID] [int] NULL ,
提交时间[SubmitTime] [datetime] NOT NULL ,
加班开始时间[StartTime] [datetime] NOT NULL ,
加班结束时间[EndTime] [datetime] NOT NULL ,
事由[Reason] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NOT NULL ,
审批状态[Status] [nchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , //四种状态:已提交,已否决,已取消,已批准
加班类型[Type] [tinyint] NULL , //两种类型:折算成年假,折算成津贴
否决理由[DenyReason] [nchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
加班小时数[Hours] [int] NULL
) ON [PRIMARY]
根据登录了该系统的用户的LoginName查出与该用户同一个部门(即DeptID相同)所有员工的加班情况,我想查出的表的结构如下:
员工姓名 加班次数 加班总小时数
testName1 2 5
testName2 1 2
testName3 0 0
testName4 3 7
补充:审批状态[Status] 为:已取消 或 已否决 或 已提交 的不算一次加班,只有 Status 为 已批准 是才算
下面的语句,查出的结果 不包括 没有加班的员工,我想要的结果要包括没加过班的员工,没加过班的员工的 加班次数和 加班总小时数 都显示为 0
select tblEmployee.EmployeeID,tblEmployee.[Name],
count(case when tblOvertime.Status='已批准' then 1 else null end) 加班次数,
Sum(case when tblOvertime.Status='已批准' then tblOvertime.Hours else 0 end) 总小时数
from tblEmployee inner join tblOvertime on tblEmployee.EmployeeID=
tblOvertime.EmployeeID where tblEmployee.DeptID
in(select tblEmployee.DeptID from tblEmployee where tblEmployee.LoginName=@LoginName)
group by tblEmployee.EmployeeID,tblEmployee.[Name]
要查出包括没加过班的应怎样?希望大家帮个忙,在此先谢谢了!!