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        27
002        12

解决方案 »

  1.   

    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')
    go
    select 员工编号,datepart(d,进厂时间) 天数 from Employees where 状态=1
    union all
    select 员工编号,datediff(d,离职时间,convert(varchar(8),dateadd(m,1,离职时间),120)+'01')-1 from employeesquit
    /*
    员工编号       天数
    ---------- -----------
    002        12
    001        27(2 行受影响)*/
    go
    drop table Employees,employeesquit
      

  2.   

    你是两个表,用union all 就相当于一句.你尽可以把它当成一个 select 看待:
    select 员工编号,datepart(d,进厂时间) 天数 from Employees where 状态=1 union all select 员工编号,datediff(d,离职时间,convert(varchar(8),dateadd(m,1,离职时间),120)+'01')-1 from employeesquit
      

  3.   

    你是两个表,用union all就相当于一句查询语句,你可以这样看:
    select 员工编号,datepart(d,进厂时间) 天数 from Employees where 状态=1 union all select 员工编号,datediff(d,离职时间,convert(varchar(8),dateadd(m,1,离职时间),120)+'01')-1 from employeesquit
      

  4.   

    我想在CASE WHEN 里面写,因为这个结果我要用来一个过程中的部份计算.