现在比如出表数据
id 员工号 行业ID 职位ID 添加日期
1 001 1 2 2011-01-01
2 001 1 2 2011-02-01
3 001 2 3 2011-03-01
4 001 2 3 2011-04-01
5 001 1 2 2011-05-01查询结果后
id 员工号 行业ID 职位ID 添加日期
1 001 1 2 2011-01-01
3 001 2 3 2011-03-01
5 001 1 2 2011-05-01
这种结果能实现吗 就是把相近两行行业 ,职位 ,员工号 相同的合并成一行 中间有间隔的不行比如 3月变了 5月又恢复就不行了 必数据相连才能合并 请问这种效果能实现吗 给下思路啊!!
id 员工号 行业ID 职位ID 添加日期
1 001 1 2 2011-01-01
2 001 1 2 2011-02-01
3 001 2 3 2011-03-01
4 001 2 3 2011-04-01
5 001 1 2 2011-05-01查询结果后
id 员工号 行业ID 职位ID 添加日期
1 001 1 2 2011-01-01
3 001 2 3 2011-03-01
5 001 1 2 2011-05-01
这种结果能实现吗 就是把相近两行行业 ,职位 ,员工号 相同的合并成一行 中间有间隔的不行比如 3月变了 5月又恢复就不行了 必数据相连才能合并 请问这种效果能实现吗 给下思路啊!!
如果有超过2行以上行业 ,职位 ,员工号 相同的,该是怎么样的结果?
如:
id 员工号 行业ID 职位ID 添加日期
1 001 1 2 2011-01-01
2 001 1 2 2011-02-01
3 001 1 2 2011-03-01
4 001 2 3 2011-04-01
5 001 1 2 2011-05-01
id 员工号 行业ID 职位ID 添加日期
1 001 1 2 2011-01-01
4 001 2 3 2011-04-01
5 001 1 2 2011-05-01
替换 :最小时间ID 员工号 行业ID 职位ID 最小时间 这样?
*
from
tb t
where
添加日期=(select min(添加日期) from tb where 员工号=t.员工号 and 职位ID =t.职位ID and datediff(mm,添加日期,t.添加日期)=1)
--> 测试数据: [tb]
if object_id('[tb]') is not null drop table [tb]
create table [tb] (id int,员工号 varchar(3),行业ID int,职位ID int,添加日期 datetime)
insert into [tb]
select 1,'001',1,2,'2011-01-01' union all
select 2,'001',1,2,'2011-02-01' union all
select 3,'001',2,3,'2011-03-01' union all
select 4,'001',2,3,'2011-04-01' union all
select 5,'001',1,2,'2011-05-01'--开始查询
select * from tb a where not exists(
select 1 from tb where 员工号=a.员工号 and 行业ID=a. 行业ID and 职位ID=a.职位ID
and datediff(month,添加日期,a.添加日期)=1 and id<a.id
)
order by id--结束查询
drop table [tb]/*
id 员工号 行业ID 职位ID 添加日期
----------- ---- ----------- ----------- -----------------------
1 001 1 2 2011-01-01 00:00:00.000
3 001 2 3 2011-03-01 00:00:00.000
5 001 1 2 2011-05-01 00:00:00.000(3 行受影响)