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

SQL报告-根据相邻列中提到的日期对列进行排序,sql,Sql,如果有人能帮我,那就太好了。我是SQL新手。 这就是我的表数据 表名:emp 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

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

表名:emp

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\u无e\u姓名e\u职位上一次当前职位晋升日期 1 Robin销售首席财务官CEO 2012年1月1日 2杰克曼销售-S1不可用EMP 01/04/2009 4谢尔顿营销经理2012年8月15日 3阿诺德市场营销部不可用首席执行官2009年9月9日 5艾美奖营销不可用SNRMGR 08/08/2008
6便士管理经理SNRMGR 2012年5月5日编辑:我似乎在发布后几秒钟就被证明是错的:p

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

如何将数据输入到应用程序中(使用Java或任何您想要的语言),然后从最旧的数据中解析数据,并跟踪每个员工的“以前的职位”。然后,每当你找到一个你已经有了“前一个位置”的位置时,你可以将其插入表中,并更新“前一个位置”(如果你以前没有见过她,则将“前一个位置”设置为null/“无”/“/等)


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

类似的东西应该可以工作。WHERE和have的组合可能需要一些调整

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)
选择
c、 不,
c、 你的名字,
c、 e_job,
p、 位置为上一个位置,
c、 位置为当前位置,
c、 促销日期
从…起
emp c
内连接
emp
在…上
c、 e_no=p.e_no
分组
c、 不,
c、 你的名字,
c、 e_job,
p、 位置为上一个位置,
c、 位置为当前位置,
哪里
p、 促销日期
什么是RDBMS?SQL Server、MySQL、PGSQL?我不认为您的问题定义得很好,因为一名员工(Sheldon)可以同时拥有两个e_jobrole值。如果Sheldon晋升为副总裁,因此增加了另一行(4,Sheldon,营销,副总裁,2012年1月6日),您希望的输出是什么?在这种情况下,谢尔顿不会只有一份以前的工作。@Nav可能会帮助试图解决这个问题的人。我没有控制住自己:/Hi Steve,你说得对。不幸的是,数据是这样产生的。但你们可以忽略这一部分,我将试着从最后单独整理这一部分。非常感谢你们的评论。基本上,我正试图通过SSRS基于这些数据创建报告。因此,我打算单独使用DB来提取所需的数据。