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

人事变动表格

2012-12-26 
人事变动报表表数据:人员编号变动日期变动项目 旧值新值1001062012-10-20 00:00:00.000中文名称李四老二10

人事变动报表
表数据:
人员编号  变动日期                   变动项目 旧值     新值
1001062012-10-20 00:00:00.000中文名称李四老二
1001062012-10-20 00:00:00.000机构五金公司五金公司
1001062012-10-20 00:00:00.000备注资材更改了中文名字
1001282012-10-18 00:00:00.000中文名称李四测试人员
1001012012-10-17 00:00:00.000中文名称李四刘永刚
1001012012-10-17 00:00:00.000英文名称lisiSunny
1001012012-10-17 00:00:00.000机构TX五金公司
1001012012-10-17 00:00:00.000部门TX业务财务
1001012012-10-17 00:00:00.000民族苗汉
1001012012-10-17 00:00:00.000类别小类大类
1001012012-10-17 00:00:00.000班组2班2班
1001012012-10-17 00:00:00.000职位职员职员
1001012012-10-17 00:00:00.000职级副总裁副经理
1001012012-10-17 00:00:00.000性别1男
1001012012-10-17 00:00:00.000入职日期2012-10-92012-10-08
1001012012-10-17 00:00:00.000身份证号130224198909072413130243198908092416
1001012012-10-17 00:00:00.000身份证地址qqAA
1001012012-10-17 00:00:00.000签发日期2008-12-12012-10-31
1001012012-10-17 00:00:00.000身份证期限1020
1001012012-10-17 00:00:00.000籍贯湖北河北
1001012012-10-17 00:00:00.000毕业院校AA水电学院
1001012012-10-17 00:00:00.000所学专业BB计算机应用
1001012012-10-17 00:00:00.000学历本科大专
1001012012-10-17 00:00:00.000毕业时间1998-9-11997-07-01
1001012012-10-17 00:00:00.000计薪方式计时计时
1001012012-10-17 00:00:00.000免卡否False是
1001012012-10-17 00:00:00.000婚姻状况未婚已婚
1001012012-10-17 00:00:00.000互助金1520
1001012012-10-17 00:00:00.000移动电话18929412325
1001012012-10-17 00:00:00.000办公电话3229
1001012012-10-17 00:00:00.000传真83639704
1001012012-10-17 00:00:00.000短号663571
1001012012-10-17 00:00:00.000邮件地址sunny@tida.com
1001012012-10-17 00:00:00.000现住址东莞
1001012012-10-17 00:00:00.000紧急联系人小平
1001012012-10-17 00:00:00.000紧急联系电话15917578869
1001012012-10-17 00:00:00.000备注beizhu备注
1001012012-10-18 00:00:00.000中文名称张三刘永刚
1001012012-10-18 00:00:00.000备注11备注
1001282012-10-18 00:00:00.000机构五金公司TX
1001282012-10-18 00:00:00.000部门资材TX业务
1001282012-10-18 00:00:00.000民族苗壮
1001282012-10-18 00:00:00.000备注beizhu更改了民族
1001082012-10-18 00:00:00.000中文名称王五五一
1001082012-10-18 00:00:00.000机构五金公司五金公司
1001082012-10-18 00:00:00.000部门资材人事
1001082012-10-18 00:00:00.000民族汉汉
1001082012-10-18 00:00:00.000备注beizhu名字更改
1001122012-10-18 00:00:00.000中文名称李四六一儿童节
1001122012-10-18 00:00:00.000机构五金公司五金公司
1001122012-10-18 00:00:00.000部门财务人事
1001122012-10-18 00:00:00.000民族苗汉
1001122012-10-18 00:00:00.000备注beizhu名字更改
1001092012-10-18 00:00:00.000中文名称李四牛七
1001092012-10-18 00:00:00.000机构五金公司五金公司
1001092012-10-18 00:00:00.000部门人事人事
1001092012-10-18 00:00:00.000民族苗汉
1001092012-10-18 00:00:00.000备注beizhu名字更改
1001032012-10-18 00:00:00.000中文名称李四马八
1001032012-10-18 00:00:00.000机构TX五金公司
1001032012-10-18 00:00:00.000部门TX业务研发
1001032012-10-18 00:00:00.000民族满汉
1001032012-10-18 00:00:00.000备注beizhu名字更改
1001012012-10-17 00:00:00.000英文名称SunnyMickey
1001012012-10-17 00:00:00.000中文名称刘永刚张三
1001012012-10-17 00:00:00.000英文名称MickeySunny
1001012012-10-17 00:00:00.000备注备注11
1001012012-10-17 00:00:00.000中文名称刘永刚张三
1001012012-10-17 00:00:00.000英文名称MickeySunny
1001012012-10-17 00:00:00.000备注备注11

想得到结果:
按员工编号在某段时间(变动时间)的发生变动的项目及该项目的最早值和最新值


[最优解释]
select 人员编号,变动项目,(select top 1 旧值 from 人员变动表 as b  where b.人员编号=a.人员编号 and b.变动项目=a.变动项目 and b.变动日期=MIN(a.变动日期)) as 最早值,(select top 1 新值 from 人员变动表 as b  where b.人员编号=a.人员编号 and b.变动项目=a.变动项目 and b.变动日期=max(a.变动日期)) as 最新值
 from 人员变动表 as a where 变动日期 between 开始日期 and 结束日期 
 group by 人员编号,变动项目  
数据有问题吗? 上面修改了下 ,子查询出现了多个值 最好查下这个是否正常。
[其他解释]

select 人员编号,变动项目,(select 旧值 from 人员变动表 as b  where b.人员编号=a.人员编号 and b.变动项目=a.变动项目 and 变动日期=MIN(变动日期)) as 最早值,
(select 新值 from 人员变动表 as b  where b.人员编号=a.人员编号 and b.变动项目=a.变动项目 and 变动日期=max(变动日期)) as 最新值
from 人员变动表 as a 
where 变动日期 between 开始日期 and 结束日期 
group by 人员编号,变动项目

[其他解释]

select
人员编号,
变动项目,
min(变动日期) as 最早变动日期,
max(变动日期) as 最晚变动日期,
旧值=(select 旧值 from tb b where a.人员编号=b.人员编号 and a.变动项目=b.变动项目 and b.变动日期=(select min(变动日期) from tb c where c.人员编号=b.人员编号 and c.变动项目=b.变动项目)),
新值=(select 新值 from tb d where a.人员编号=d.人员编号 and a.变动项目=d.变动项目 and b.变动日期=(select min(变动日期) from tb e where e.人员编号=d.人员编号 and e.变动项目=d.变动项目))
where 变动日期 between 起始日期  and  结束日期

[其他解释]

select
人员编号,
变动项目,
min(变动日期) as 最早变动日期,
max(变动日期) as 最晚变动日期,
旧值=(select 旧值 from tb b where a.人员编号=b.人员编号 and a.变动项目=b.变动项目 and b.变动日期=(select min(变动日期) from tb c where c.人员编号=b.人员编号 and c.变动项目=b.变动项目)),
新值=(select 新值 from tb d where a.人员编号=d.人员编号 and a.变动项目=d.变动项目 and b.变动日期=(select max(变动日期) from tb e where e.人员编号=d.人员编号 and e.变动项目=d.变动项目))
where 变动日期 between 起始日期  and  结束日期

[其他解释]
表a呢,是哪个啊,我看不懂.测试也通不过
[其他解释]
我换成tb也不行,怎么弄啊.高手出来啊.很常用的东东啊
[其他解释]
引用:
SQL code12345select 人员编号,变动项目,(select 旧值 from 人员变动表 as b  where b.人员编号=a.人员编号 and b.变动项目=a.变动项目 and 变动日期=MIN(变动日期)) as 最早值,(select 新值 from 人员变动表 as b  where b.人员编号=a.人员编号 and b.变动项目=a.变动项……

报什么错误?
[其他解释]
消息 147,级别 15,状态 1,第 2 行
聚合不应出现在 WHERE 子句中,除非该聚合位于 HAVING 子句或选择列表所包含的子查询中,并且要对其进行聚合的列是外部引用。

[其他解释]

引用:

消息 147,级别 15,状态 1,第 2 行
聚合不应出现在 WHERE 子句中,除非该聚合位于 HAVING 子句或选择列表所包含的子查询中,并且要对其进行聚合的列是外部引用。

select 人员编号,变动项目,(select 旧值 from 人员变动表 as b  where b.人员编号=a.人员编号 and b.变动项目=a.变动项目 and b.变动日期=MIN(a.变动日期)) as 最早值,(select 新值 from 人员变动表 as b  where b.人员编号=a.人员编号 and b.变动项目=a.变动项目 and b.变动日期=max(a.变动日期)) as 最新值
from 人员变动表 as a where 变动日期 between 开始日期 and 结束日期 
group by 人员编号,变动项目 
[其他解释]
消息 512,级别 16,状态 1,第 1 行
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
[其他解释]
我想得到的是每个人员编号,在某段时间,每个变动项目的最旧值和最新值.其实可以分开做,我是想学习下怎样一条语句实现.这是很常用的语句.谢谢你们.
[其他解释]
大概测试了下,先给分

热点排行