sql - Oracle SQL:从加入日期开始的几周
问题描述
我有一个包含几年交易的表格,其中还添加了一年中的一周数列(1-53)。我想将表格重新加入并汇总每个年/周组合,从年/周返回 12 周的行。例如,如果我有 2018 年第 15 周,我想总结 2018 年的第 5-14 周。
由于多年,我不能只看周数之间的差异。
是否有允许此连接条件的功能或方法?
解决方案
不太确定您的列是如何定义的,但我尝试了您的问题。
with data(year, week, value) as(
SELECT 2018 year
, Level week
, 1 value
FROM DUAL
CONNECT BY LEVEL <= 53
union all
SELECT 2017 year
, Level week
, 1 value
FROM DUAL
CONNECT BY LEVEL <= 53
)
select 'Sum values 12 weeks before ' || :year ||' '||:week, sum(value) from data
where 1=1
and (year = :year
and week < :week
and week >= :week -12)
or ( year =:year -1
and week >= case when :week -12 <=0 then (:week -12 + 53) end)
推荐阅读
- c++ - 使用 QListWidget 的 Qt 命令日志
- c# - 创建元素数组 c# 控制台
- cluster-computing - 解决 SLURM “sbatch:错误:批处理作业提交失败:请求的节点配置不可用”错误
- sql - Symfony 4 - SQLSTATE[42000] 未知原因更改表
- java - localhost api 请求的 Http 失败响应:0 未知错误 - Angular
- archive - 借助 elementor 在作者档案中显示自定义帖子类型
- generics - 与可区分联合上的另一个接口的成员实现接口
- excel - Excel VBA 进度指示器
- html - 以元方式在代码元素中显示代码
- spring-batch - 使用 JdbcCursorItemReader 或 JdbcPagingItemReader 节省 JDBC 连接