首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL报告-根据相邻列中提到的日期对列进行排序

SQL报告-根据相邻列中提到的日期对列进行排序
EN

Stack Overflow用户
提问于 2012-05-10 23:42:52
回答 2查看 108关注 0票数 0

如果有人能帮我,那就太好了。我是SQL的新手。这就是我的表数据

表名: emp

代码语言:javascript
复制
e_no    e_name        e_jobrole      position   promotion_date
1   Robin   Sales           CEO 01/01/2012
1   Robin   Sales           CFO 20/01/2010
2   Jackman Sales - S1  EMP 01/04/2009
4   Sheldon Marketing   MGR 15/08/2012
4   Sheldon Marketing   SNRMGR  01/01/2011
4   Sheldon Marketing   MGR 01/01/2011
3   Arnold  Marketing   CEO 09/09/2009
5   Emmy    Marketing   SNRMGR  08/08/2008
6   Penny   Admin           SNRMGR  05/05/2012
6   Penny   Admin           MGR 09/09/2007

通过对这些人的升职日期进行排序,我需要捕获员工所担任的前一个职位,并与该当前职位相邻。这是可能的吗?

下面是我需要的输出

e_no e_name e_job prev_pos curr_pos promotion_date 1罗宾销售首席财务官首席执行官2012年1月1日2 Jackman Sales - S1不可用EMP 2009年1月4日4谢尔顿营销经理2012年8月15日3阿诺德营销不可用首席执行官2009年9月9日5艾美奖营销未提供SNRMGR 2008年8月8日6便士管理员SNRMGR 2012年5月5日

EN

回答 2

Stack Overflow用户

发布于 2012-05-10 23:53:48

编辑:我似乎在发帖几秒钟后就被证明是错的:P

我不认为您可以在一个查询中做到这一点(除非使用复杂的存储过程)。

如何将数据放入应用程序(使用Java或您喜欢的任何语言),然后从最旧的数据中解析数据,并跟踪每个员工的“以前的职位”。然后,当你到达一个你已经有一个“上一个位置”的位置时,你可以将它插入到表格中,并更新“上一个位置”(如果你以前没有见过她,将“上一个位置”设置为null/"none"/""/etc)。

这是有用的,还是必须全部在DB上完成?

票数 0
EN

Stack Overflow用户

发布于 2012-05-10 23:53:59

像这样的东西应该行得通。WHERE和HAVING的组合可能需要一些调整。

代码语言:javascript
复制
select 
  c.e_no, 
  c.e_name, 
  c.e_job, 
  p.position as prev_position, 
  c.position as curr_position, 
  c.promotion_date
from 
  emp c
inner join
  emp p
on 
  c.e_no=p.e_no
group by
  c.e_no, 
  c.e_name, 
  c.e_job, 
  p.position as prev_position, 
  c.position as curr_position, 
where 
  p.promotion_date < c.promotion_date
having 
  max(p.promotion_date),
  max(c.promotion_date)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10537599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档