旧作业和新作业列 SQL

Posted

技术标签:

【中文标题】旧作业和新作业列 SQL【英文标题】:Old Job and New Job columns SQL 【发布时间】:2021-04-09 15:20:27 【问题描述】:

是否可以显示 3 个新列 - 旧作业、新作业、起始日期

我下面有一个 sql 的例子。

select
    emp_no,
    emp_name, 
    job_title, 
    valid_from,
    valid_to
    
from 
   tableA

我想显示列 -

Emp No Emp 名称、旧作业、新作业、起始日期

Old Job 和 New Job 是 Job Title 中的值,From Date 是 Valid From

TIA

亚西尔

【问题讨论】:

看起来像 lead / lag 而不是 pivot 请提供样本数据和所需的输出 附上图片作为参考 图片是not a sample data请阅读sql tag wiki 顺便说一句,我不是“魔法约会”的忠实粉丝。即:valid_to = 31/12/9999。如果 'valid_to' 日期尚未确定(无论出于何种原因),则将其保留为 NULL。 【参考方案1】:

试试lag:

select *
from (
  select
    emp_no,
    emp_name,
    lag(job_title) over (partition by emp_no order by valid_from) as old_job,
    job_title as new_job,
    valid_from
  from tableA
)
where old_job is not null

【讨论】:

谢谢。我会试试看

以上是关于旧作业和新作业列 SQL的主要内容,如果未能解决你的问题,请参考以下文章