您可以在内部表上使用ROW_NUMBER()
模拟generate_series
。
我想将一个表与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()函数生成的一系列数据交叉连接以生成36个月。我不知道如何进行这种配置的交叉联接。 ...
您可以在内部表上使用ROW_NUMBER()
模拟generate_series
。
date_gen AS (
SELECT DATE_ADD('month', - i.i, DATE_TRUNC('month', CURRENT_DATE)) AS mnth
FROM (
SELECT ROW_NUMBER() OVER() i
FROM stl_scan
LIMIT 36
) i
)
您可以在内部表上使用ROW_NUMBER()
模拟generate_series
。