旧作业和新作业列 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的主要内容,如果未能解决你的问题,请参考以下文章

对 SparkSQL 中数组列的每个元素执行 UDF(需要另一个 spark 作业)

翻译— 通往SQL Server代理的阶梯-二级:作业步骤和子系统

翻译:通往SQL Server代理的阶梯-二级:作业步骤和子系统

SQL Server代理的阶梯 - 第2级:作业步骤和子系列

哪些人会看作业指导书?作业指导书怎样才能发挥作用?

在拖放作业框时,如何根据jquery中作业框中的数据列值自动调整或覆盖时间表块?