【发布时间】:2019-10-08 18:26:19
【问题描述】:
我想用generate_series()函数生成的一系列数据交叉连接一个表来生成36个月。
我不知道如何使用此配置进行交叉连接。
知道:
我无法创建新表来存储 generate_series() 的结果
使用 Redshift,我没有最新版本的 PostgreSQL,我不得不将我的
generated_series()设为这样才能正常工作。
我试过这个没有成功。
WITH sales AS (
SELECT
department
,product
,count(*) as invoice
FROM table
WHERE product SIMILAR TO '%(Apple|Lemon|Salt)%'
AND department is not NULL
group by department , product order by department , product ASC
),
date_gen as( SELECT (date_trunc('month', CURRENT_DATE::TIMESTAMP)) - (i * interval '1 month') as date_datetime
FROM generate_series(1,36) i
)
SELECT * FROM date_gen
CROSS JOIN sales;
如果你有专业提示:)
【问题讨论】:
-
我过去的实验表明
generate_series()是在Leader节点上运行的,所以不能和表中的数据进行join。您可以使用generate_series()创建日历表,该表可用于将来的日期连接,或者简单地使用电子表格生成信息并导出为 CSV 以填充日历表。
标签: amazon-web-services amazon-redshift cross-join