首页 > 解决方案 > Oracle SQL:从加入日期开始的几周

问题描述

我有一个包含几年交易的表格,其中还添加了一年中的一周数列(1-53)。我想将表格重新加入并汇总每个年/周组合,从年/周返回 12 周的行。例如,如果我有 2018 年第 15 周,我想总结 2018 年的第 5-14 周。

由于多年,我不能只看周数之间的差异。

是否有允许此连接条件的功能或方法?

标签: sqloraclegroup-byaggregation

解决方案


不太确定您的列是如何定义的,但我尝试了您的问题。

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)

推荐阅读