Запрос куста: неоднозначная ссылка на столбец acct_nbr в стадии - PullRequest
0 голосов
/ 01 мая 2018

Я получаю "Неоднозначную ссылку на столбец"

запрос:

SELECT stage.acct_nbr 
FROM   (SELECT * 
        FROM   mem stage 
               JOIN (SELECT acct_nbr, 
                            corp_ent_cd, 
                            sub_seq_nbr, 
                            mem_nbr, 
                            Max(cdc_src_last_updt_ts) AS cdc_src_last_updt_ts 
                     FROM   mem 
                     WHERE  file_nm = 'DLTV.FULL.MES3191.D180423' 
                     GROUP  BY acct_nbr, 
                               corp_ent_cd, 
                               sub_seq_nbr, 
                               mem_nbr) c 
                 ON c.corp_ent_cd = stage.corp_ent_cd 
                    AND c.acct_nbr = stage.acct_nbr 
                    AND c.sub_seq_nbr = stage.sub_seq_nbr 
                    AND c.mem_nbr = stage.mem_nbr 
                    AND stage.cdc_src_last_updt_ts = c.cdc_src_last_updt_ts 
        WHERE  stage.file_nm = 'DLTV.FULL.MES3191.D180423') stage; 

Сообщение об ошибке:

Ошибка: ошибка при компиляции оператора: СБОЙ: SemanticException [Ошибка 10007]: неоднозначная ссылка на столбец acct_nbr на этапе (состояние = 42000, код = 10007)

Принимая во внимание, что я выбираю * вместо stage.acct_nbr, он выполняется без ошибок.

Может ли кто-нибудь решить мою проблему?

1 Ответ

0 голосов
/ 01 мая 2018

Проблема на SELECT *.

В подзапросе есть два столбца c.acct_nbr, stage.acct_nbr, поэтому внешний SELECT не может stage.acct_nbr определить, какой столбец вы хотите получить.

Таким образом, вы можете выбрать c.acct_nbr или stage.acct_nbr в вашем select подзапросе

Вы можете попробовать это.

SELECT stage.acct_nbr 
FROM   (SELECT c.acct_nbr 
        FROM   mem stage 
               JOIN (SELECT acct_nbr, 
                            corp_ent_cd, 
                            sub_seq_nbr, 
                            mem_nbr, 
                            Max(cdc_src_last_updt_ts) AS cdc_src_last_updt_ts 
                     FROM   mem 
                     WHERE  file_nm = 'DLTV.FULL.MES3191.D180423' 
                     GROUP  BY acct_nbr, 
                               corp_ent_cd, 
                               sub_seq_nbr, 
                               mem_nbr) c 
                 ON c.corp_ent_cd = stage.corp_ent_cd 
                    AND c.acct_nbr = stage.acct_nbr 
                    AND c.sub_seq_nbr = stage.sub_seq_nbr 
                    AND c.mem_nbr = stage.mem_nbr 
                    AND stage.cdc_src_last_updt_ts = c.cdc_src_last_updt_ts 
        WHERE  stage.file_nm = 'DLTV.FULL.MES3191.D180423') stage; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...