如何使用Redshift交叉连接generate_series和表?

问题描述 投票:0回答:1

我想将一个表与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
)
amazon-web-services amazon-redshift cross-join
1个回答
0
投票

您可以在内部表上使用ROW_NUMBER()模拟generate_series

© www.soinside.com 2019 - 2024. All rights reserved.