如何在sql oracle中获取开始日期和结束日期之间的所有年份

比乔

我有一张evaluations这样的桌子

在此处输入图片说明

我想通过枚举两个范围之间的所有年份bgn_yearandend_year转换为 eval_year 。结果如下所示:

在此处输入图片说明

我尝试通过以下方式进行连接:

select  employee,
     evaluator_type,
     EVALUATOR,
     (bgn_year-1)+level as eval_year
from evaluations
connect by  (bgn_year-1)+level <=end_year

但是我有很多重复的行。我可以添加一个不同的,但我认为这不是这样做的方法。

小脚怪

这将是这样的(第 1 - 7 行中的示例数据;您需要的查询从第 8 行开始):

SQL> with evaluations (employee, bgn_year, end_year, evaluator_type, evaluator)
  2  as
  3  (select 'A', 2019, 2021, 'POS1', 'X' from dual union all
  4   select 'A', 2018, 2021, 'POS2', 'Y' from dual union all
  5   select 'B', 2019, 2020, 'POS1', 'Z' from dual union all
  6   select 'B', 2020, 2021, 'POS1', 'X' from dual
  7  )
  8  select employee,
  9         --
 10         bgn_year + column_value - 1 as eval_year,
 11         --
 12         evaluator_type,
 13         evaluator
 14  from evaluations cross join
 15       table(cast(multiset(select level from dual
 16                           connect by level <= end_year - bgn_year + 1
 17                          ) as sys.odcinumberlist));

EMPLOYEE    EVAL_YEAR EVALUATOR_TYPE  EVALUATOR
---------- ---------- --------------- ----------
A                2019 POS1            X
A                2020 POS1            X
A                2021 POS1            X
A                2018 POS2            Y
A                2019 POS2            Y
A                2020 POS2            Y
A                2021 POS2            Y
B                2019 POS1            Z
B                2020 POS1            Z
B                2020 POS1            X
B                2021 POS1            X

11 rows selected.

SQL>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从MYSQL中的日期列表中获取开始年份和结束年份

如何获取开始日期和结束日期之间的月数

如何在MongoDB中获取开始日期和结束日期之间的数据

如果输入日期不可用,如何在oracle中获取开始日期和结束日期之间的输入日期,然后返回最大日期记录

如何在材料日期范围选择器中获取开始日期和结束日期之间的日期

如何获取开始日期和结束日期之间的每周日期

如何在SQL Server中获取“完成年份”的星期数,开始日期和结束日期?

如何从Google脚本中的星期数获取开始日期和结束日期

如何从值中获取开始日期时间戳和结束日期时间戳

如何获取表中所有年份的两个日期(月和日)之间的记录?

如何根据一天中的任务完成情况从给定的日期列中获取开始日期和结束日期(oracle)

如何在Android中获取年份的开始日期和结束日期?

如何通过在 SQL Server 中选择周数来获取开始日期和结束日期

如何从SQL Server表的单个日期列中获取开始/结束日期

如何在oracle中查找一个月中所有周的开始日期和结束日期

如何在mysql中使用星期数获取开始和结束星期的日期?

如何在SQL中从开始日期,开始时间和完成时间获取结束日期

如何传递简单日历gem的开始日期和结束日期之间的所有日期

在sql server中两个日期之间的年份,每个日期在sql server中的开始和结束日期

SQL 查询从标记为“D”的任务中获取开始和结束日期(如果存在),否则为最小开始和结束日期

如何从DHTMLX Gantt图表获取开始绘制日期和结束绘制日期

如何在php中知道年号和月号时如何获取开始日期和结束日期

如何在react js中获取开始日期和当前月份日期?

如何在SQL中从日期获取日期和年份

如何使用 moment.js 从这个 iso 格式的结构中获取开始和结束日期?

如果在PHP中同时具有年份和星期#(ISO-8601的星期数),如何获取日期?

如何创建一个存储过程,在 MYSQL 中的开始日期和结束日期之间获取销售的开始日期和结束日期

SQL在日期之间进行选择,但是在开始日期和结束日期为空时显示所有内容

获取开始日期和结束日期熊猫列之间的所有日期