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

怎么生成《在职月份表》

2012-02-10 
如何生成《在职月份表》sql server 2K 表A:------------------------------------员工入厂日离职日A2007-7-1

如何生成《在职月份表》
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

谢谢!

[解决办法]

SQL code
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 员工

热点排行