Я пытаюсь создать панель мониторинга, которая показывает ежемесячный доход за каждый месяц. Я думаю, что лучший способ сделать это - создать таблицу, в которой есть строка за каждый месяц с доходом рядом с ней. Одна строка данных в настоящее время выглядит следующим образом:Нужна помощь в создании нескольких строк за каждый месяц между двумя датами в одной строке
Subscription_ID| Start_Date| End_Date |Monthly_revenue
2384105 | 1/1/2016 | 6/1/2016 |500
Я хотел бы, чтобы каким-то образом преобразовать эту строку, чтобы выглядеть следующим образом:
Subscription_ID |Month |Monthly_Revenue
2384105 |1/1/2016 | 500
2384105 |2/1/2016 | 500
2384105 |3/1/2016 | 500
2384105 |4/1/2016 | 500
2384105 |5/1/2016 | 500
2384105 |6/1/2016 | 500
Я понятия не имею, как даже идти об этом. Любые советы были бы очень признательны или если вы можете указать мне в правильном направлении. Я использую redshift как мою БД, поэтому синтаксис в основном похож на postgres.
Редактировать: Ответить на комментарий - Я могу легко составить таблицу со всеми датами и годами в ней, если это поможет справиться.
Redshift не поддерживает, чтобы генерировать даты рекурсивного CTE в период между любыми 2 указанными датами. У вас есть таблица со всеми месяцами и годами? –
без рекурсивного cte, вы все равно можете сделать это с таблицей подсчета – Matt
Вы бы традиционно делали это в PostgreSQL с помощью 'generate_series()' однако RedShift основан на более старой версии, которая ее не имела. У этого могут быть некоторые альтернативные методы, которые могли бы помочь: http://stackoverflow.com/questions/22759980/generate-series-in-redhsift/34167753#34167753 – Nicarus