RedShift Коррелированный подзапрос - PullRequest
0 голосов
/ 15 апреля 2020

нужна ваша помощь. Я пытаюсь преобразовать приведенный ниже SQL запрос в RedShift, но получаю сообщение об ошибке " Недопустимая операция: этот тип коррелированного шаблона подзапроса пока не поддерживается "

SELECT
    Comp_Key,
    Comp_Reading_Key,
    Row_Num,
    Prev_Reading_Date,
    ( SELECT MAX(X) FROM (
                        SELECT CAST(dateadd(day, 1, Prev_Reading_Date) AS DATE) AS X
                        UNION ALL 
                        SELECT dim_date.calendar_date
                        ) a
        ) as start_dt
FROM stage5
    JOIN dim_date ON calendar_date BETWEEN '2020-04-01' and '2020-04-15'    
WHERE Comp_Key =50906055

Тот же запрос отлично работает на SQL сервере. Не могли бы вы помочь мне запустить его в RedShift?

С уважением,

Киру

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

Спасибо, Билл. Он не будет работать в RedShift, поскольку у него все еще есть коррелированный подзапрос.

Однако я изменил запрос в другом методе, и он работает нормально. Я закрываю билет.

0 голосов
/ 19 апреля 2020

Kiru - вам нужно преобразовать коррелированный запрос в структуру соединения. Не зная содержания данных ваших таблиц и точного ожидаемого результата, я просто догадываюсь, но вот сваг:

SELECT
    Comp_Key,
    Comp_Reading_Key,
    Row_Num,
    Prev_Reading_Date,
    Max_X
FROM stage5
    JOIN dim_date ON calendar_date BETWEEN '2020-04-01' and '2020-04-15'  
    JOIN ( SELECT MAX(X) as Max_X, MAX(calendar_date) as date FROM (
                        SELECT CAST(dateadd(day, 1, Prev_Reading_Date) AS DATE) AS X FROM stage5
                        cross join
                        SELECT dim_date.calendar_date from dim_date
                        ) a
        ) as start_dt ON   a.date = dim_date.calendar_date
WHERE Comp_Key =50906055

Это только начальное предположение, но оно может помочь вам начать.

Однако вам, вероятно, лучше переписать этот запрос, чтобы использовать оконные функции, поскольку они являются самым быстрым способом выполнения циклических запросов такого типа в Redshift.

...