首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

计算员工的离职后前的天数,该如何解决

2012-03-03 
计算员工的离职后前的天数SQL codecreate table Employees(员工编号,进厂时间,状态)--状态0为离职,大于0在

计算员工的离职后前的天数

SQL code
create table Employees(员工编号,进厂时间,状态)--状态0为离职,大于0在职insert into  Employees('001','2010-12-2',0)insert into  Employees('002','2011-12-12',1)insert into  Employees('003','2011-10-12',3)create table EmployeesQuit(员工编号,离职时间)insert into  EmployeesQuit('001','2012-12-4')--想要的结果员工编号  天数001        27002        12


[解决办法]
SQL code
create table Employees(员工编号 varchar(10),进厂时间 datetime,状态 int)--状态0为离职,大于0在职insert into  Employees values('001','2010-12-2',0)insert into  Employees values('002','2011-12-12',1)insert into  Employees values('003','2011-10-12',3)create table EmployeesQuit(员工编号 varchar(10),离职时间 datetime)insert into  EmployeesQuit values('001','2012-12-4')goselect 员工编号,datepart(d,进厂时间) 天数 from Employees where 状态=1union allselect 员工编号,datediff(d,离职时间,convert(varchar(8),dateadd(m,1,离职时间),120)+'01')-1 from employeesquit/*员工编号       天数---------- -----------002        12001        27(2 行受影响)*/godrop table Employees,employeesquit
[解决办法]
探讨

引用:
SQL code
create table Employees(员工编号 varchar(10),进厂时间 datetime,状态 int)--状态0为离职,大于0在职
insert into Employees values('001','2010-12-2',0)
insert into Employees values('002'……

[解决办法]
你是两个表,用union all就相当于一句查询语句,你可以这样看:
SQL code
select 员工编号,datepart(d,进厂时间) 天数 from Employees where 状态=1 union all select 员工编号,datediff(d,离职时间,convert(varchar(8),dateadd(m,1,离职时间),120)+'01')-1 from employeesquit
[解决办法]
如果要作为整体考虑的话,要从你的语句所调用的表去看,不能简单地从一个语句来考虑.因为,你的数据是从两个表中获取的.

热点排行