职称与工资的问题

jjcl521 2015-08-11 10:29:12


declare @tb table (id int ,name varchar(20), ddate datetime)
insert into @tb (id , name , ddate)
select 1,'张三','2010-3-4' union all
select 2,'张三','2011-3-4' union all
select 3,'张三','2012-3-4' union all
select 4,'张三','2013-3-4' union all
select 5,'张三','2014-3-4' union all
select 6,'张三','2015-3-4' union all
select 7,'李四','2010-5-1' union all
select 8,'李四','2011-5-1' union all
select 9,'李四','2012-5-1' union all
select 10,'李四','2013-5-1' union all
select 11,'李四','2014-5-1' union all
select 12,'李四','2015-5-1'

declare @tt table (name varchar(20), ddate varchar(7), job varchar(20))
insert into @tt (name, ddate, job)
select '张三', '2010-04','助理工程师' union all
select '张三', '2013-04','工程师' union all
select '张三', '2015-04','高级工程师' union all
select '李四', '2010-04','助理工程师' union all
select '李四', '2013-04','工程师' union all
select '李四', '2015-04','中级工程师'

--tt 职位变动,工资应该也相应有所变化,所以想查询@tb变每个时间点职位
...全文
132 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxfvba 2015-08-11
  • 打赏
  • 举报
回复
select a.name,a.dDate,b.dDate,b.job from (select a.name,a.dDate,max(b.dDate) bdate from @tb a left join @tt b on b.name=a.name and convert(varchar(7),a.dDate,120)>=b.dDate group by a.name,a.ddate) a left join @tt b on a.name=b.name and a.bdate=b.dDate order by a.name,a.dDate
gw6328 2015-08-11
  • 打赏
  • 举报
回复
博客园已回答。 还是2#的方法好。一句搞定。 学习。
Tiger_Zhao 2015-08-11
  • 打赏
  • 举报
回复
        SELECT *
FROM @tb b
CROSS APPLY (
SELECT TOP 1 job
FROM @tt t
WHERE t.name = b.name
AND CONVERT(datetime,t.ddate+'-01',120) <= b.ddate
ORDER BY ddate DESC
) a

         id name                 ddate                   job
----------- -------------------- ----------------------- --------------------
2 张三 2011-03-04 00:00:00.000 助理工程师
3 张三 2012-03-04 00:00:00.000 助理工程师
4 张三 2013-03-04 00:00:00.000 助理工程师
5 张三 2014-03-04 00:00:00.000 工程师
6 张三 2015-03-04 00:00:00.000 工程师
7 李四 2010-05-01 00:00:00.000 助理工程师
8 李四 2011-05-01 00:00:00.000 助理工程师
9 李四 2012-05-01 00:00:00.000 助理工程师
10 李四 2013-05-01 00:00:00.000 工程师
11 李四 2014-05-01 00:00:00.000 工程师
12 李四 2015-05-01 00:00:00.000 中级工程师

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧