| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 854 人关注过本帖
标题:sql多表查询,含统计
只看楼主 加入收藏
ivantse
Rank: 1
等 级:等待验证会员
帖 子:16
专家分:0
注 册:2010-10-18
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:3 
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 ,
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

考勤记录表
CREATE TABLE [dbo].[tblAttendance] (
    考勤记录编号[AttendID] [int] IDENTITY (1, 1) NOT NULL ,
    员工编号[EmployeeID] [int] NOT NULL ,
    早退/迟到时间[BreachTime] [datetime] NULL ,
    记录者编号[RecorderID] [int] NULL ,
    类型[Type] [nchar] (4) COLLATE Chinese_PRC_CI_AS NOT NULL ,       类型包括:早退、迟到、缺勤
    是否要求复核[AskReview] [tinyint] NULL ,  
    考勤日期[Date] [datetime] NOT NULL
) ON [PRIMARY]

然后根据 用户的 LoginName 查出 和该用户同一个部门的(即部门编号 [DeptID]相同) 考勤情况的表

员工姓名[Name]   迟到次数    早退次数   缺勤次数
  testName1         n           n           n
  testName2         n           n           n
  testName3         n           n           n

在此先多谢各位了!!!

搜索更多相关主题的帖子: sql 统计 查询 
2010-10-18 18:39
aei135
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:232
专家分:1176
注 册:2009-4-6
收藏
得分:5 
select a.employeeid,a.name,count(case when b.type='迟到' then 1 else null end) 迟到次数,
            count(case when b.type='早退' then 1 else null end) 早退次数,
            count(case when b.type='缺勤' then 1 else null end) 缺勤次数
from tblemployee a inner join tblattendance b on a.employeeid=b.employeeid
where b.depid in(select depid from tblemployee where loginname=@loginname)
2010-10-21 13:42
ivantse
Rank: 1
等 级:等待验证会员
帖 子:16
专家分:0
注 册:2010-10-18
收藏
得分:0 
回复 2楼 aei135
表b 是 没有 deptid的喔
2010-10-22 23:00
ivantse
Rank: 1
等 级:等待验证会员
帖 子:16
专家分:0
注 册:2010-10-18
收藏
得分:0 
回复 2楼 aei135
不能同时查出 EmployeeID  和Name

查EmployeeID 或 Name 其中一个就可以

select tblEmployee.[Name],
count(case when tblAttendance.Type='迟到' then 1 else null end) 迟到次数,
count(case when tblAttendance.Type='早退' then 1 else null end) 早退次数,
count(case when tblAttendance.Type='缺勤' then 1 else null end) 缺勤次数
from tblEmployee inner join tblAttendance on tblEmployee.EmployeeID=
tblAttendance.EmployeeID where tblEmployee.DeptID  
in(select tblEmployee.DeptID from tblEmployee where tblEmployee.LoginName='llma')
group by tblEmployee.[Name]
2010-10-22 23:09
快速回复:sql多表查询,含统计
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024481 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved