如何生成《在职月份表》
sql server 2K 表A:
------------------------------------
员工 入厂日 离职日
A 2007-7-1 2007-9-3
B 2007-6-3 2007-7-21
...
存储过程如何生成下表:
------------------------------------
员工 在职年份 在职月份
A 2007 7
A 2007 8
A 2007 9
B 2007 6
B 2007 7
谢谢!
[解决办法]
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') goselect top 1000 id=identity( int,0,1) into tmp from syscolumns a,syscolumns bselect distinct 员工,year(日期) 在职年份,month(日期) 在职月份 from( select a.员工,dateadd(day,b.id,入厂日) 日期 from tb a, tmp b where dateadd(day,b.id,入厂日) <= a.离职日) torder by 员工drop table tb,tmp/*员工 在职年份 在职月份 ---------- ----------- ----------- A 2007 7A 2007 8A 2007 9B 2007 6B 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 员工