【问题标题】:How to select only one year data from this week in Redshift如何在 Redshift 中仅选择本周的一年数据
【发布时间】:2022-01-21 18:30:53
【问题描述】:

我有一张如下表

year  month isoweek day
・
・
2020  12     49  2021/12/5
・
・ 
2020  12    50  2021/12/7
・
・
2021  12     51  2021/12/20 
2021  12     51  2021/12/21

我只想在isoweek 中选择一年 在这个例子中,今天是2021/12/20,它在这个表中的等周是51 我想得到2020 isoweek 522021 isoweek 51。 有什么方法可以实现吗?

year  month isoweek day
2020  12    52  2021/12/21 
・
・
2021  12     51  2021/12/20 
2021  12     51  2021/12/21

我尝试了以下查询,但仍然无法提取一年范围。

select *
from table
where day <= current_date

如果有人有意见,请告诉我 谢谢

【问题讨论】:

    标签: sql amazon-web-services amazon-redshift


    【解决方案1】:

    试试:

    select      t.*
    from        tbl                           t
    cross join  (
                  select  yr,
                          isoweek
                  from    tbl
                  where   dt = trunc(sysdate)
                )                             x
    where       (t.yr = x.yr - 1 and t.isoweek > x.isoweek)
             or (t.yr = x.yr     and t.isoweek <= x.isoweek);
    

    我更改了一些列名和表名,以避免在小提琴中使用保留字 -- http://sqlfiddle.com/#!4/98de6d/1/0

    此查询中的数据年份基于当前日期,正如您所暗示的那样。如果需要其他日期,请将trunc(sysdate) 替换为给定日期。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      • 2020-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多