日期:2014-05-18 浏览次数:20488 次
create table tb(员工 varchar(10),入厂日 datetime,离职日 datetime) insert into tb values('A','2007-7-1','2007-9-3') insert into tb values('B','2007-6-3','2007-7-21') go select top 1000 id=identity( int,0,1) into tmp from syscolumns a,syscolumns b select distinct 员工,year(日期) 在职年份,month(日期) 在职月份 from ( select a.员工,dateadd(day,b.id,入厂日) 日期 from tb a, tmp b where dateadd(day,b.id,入厂日) <= a.离职日 ) t order by 员工 drop table tb,tmp /* 员工 在职年份 在职月份 ---------- ----------- ----------- A 2007 7 A 2007 8 A 2007 9 B 2007 6 B 2007 7 (所影响的行数为 5 行) */
------解决方案--------------------
select distinct 员工,year(日期) 在职年份,month(日期) 在职月份 from
(
select a.员工,dateadd(month,b.id,入厂日) 日期 from tb a, tmp b where dateadd(month,b.id,入厂日) <= a.离职日
) t
order by 员工
------解决方案--------------------
select top 1000 id=identity( int,0,1) into tmp from syscolumns a
select distinct 员工,year(日期) 在职年份,month(日期) 在职月份 from
(
select a.员工,dateadd(month,b.id,入厂日) 日期 from tb a, tmp b where dateadd(month,b.id,入厂日) <= a.离职日
) t
order by 员工