首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将递归查询从周到月转换为月到月

将递归查询从周到月转换为月到月
EN

Stack Overflow用户
提问于 2016-05-05 22:09:57
回答 1查看 101关注 0票数 0

我有一个递归查询,它提供每周下订单的数量(week_no、week_start和week_end)。我想为一个月的分析创建一个类似的细目。

代码语言:javascript
复制
WITH recursive weeks (week_start, week_end, time_end, weekno) AS (
VALUES ('2015-12-27'::date, '2016-01-02'::date, '2016-04-02'::date, 1) 
UNION ALL 
SELECT (week_end + interval '1 day')::date, 
       (CASE 
              WHEN (week_end + interval '7 days')::date > time_end THEN time_end 
              ELSE (week_end + interval '7 days')::date 
       END)::date, 
       time_end, 
       weekno+1 
FROM   weeks 
WHERE  time_end > week_end)

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2016-05-05 22:13:58

为什么要使用递归查询呢?使用generate_series()

代码语言:javascript
复制
select g.week_start, g.week_start + interval '6 day' as week_end,
       row_number() over (order by g.week_start) as weeknum
from generate_series('2015-12-27'::timestamp,
                     '2016-01-02'::timestamp,
                     interval '1 week'
                    ) g(week_start);

几个月的等价物如下:

代码语言:javascript
复制
select g.month_start, g.month_start + interval '1 month' - interval '1 day' as month_end,
       row_number() over (order by g.month_start) as monthnum
from generate_series('2015-12-01'::timestamp,
                     '2016-01-01'::timestamp,
                     interval '1 month'
                    ) g(month_start);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37052846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档