Как перекрестно соединить generate_series и таблицу с Redshift? - PullRequest
1 голос
/ 08 октября 2019

Я бы хотел перекрестное объединение таблицы с серией данных, сгенерированных функцией 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;

Если у вас есть профессиональные советы:)

1 Ответ

0 голосов
/ 09 октября 2019

Вы можете использовать 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
)
...