日期:2014-05-18 浏览次数:20590 次
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 员工