присоединение к результату запроса - PullRequest
0 голосов
/ 12 июня 2018

Я новичок в SQL и испытываю проблемы при соединении таблицы результатов запроса с существующей таблицей.Я пытался назвать результат запроса как res_tab, но он, похоже, не работает. Я просто хочу иметь возможность объединить результат запроса с существующей таблицей.Вот что у меня есть:

(select distinct op_id
from cmpr_dept_vmdb.cust_promotion
where promo_id in ('TB4M40', 'TB4M41', 'TB4M42')
and regstrn_status_cd = 'R') as res_tab;

select elite_hist.op_id
from cmpr_dept_vmdb.elite_hist_detail as elite_hist
where elite_hist.instant_elt_promo_cd in ('F1', 'F2', 'F3')
inner join elite_hist
on res_tab.op_id = elite_hist.op_id

возвращает следующую ошибку: Синтаксическая ошибка: ожидается что-то среднее между ')' и ключевым словом as '

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Вы, кажется, хотите subquery с корреляцией подходить правильно

select distinct elite_hist.op_id
from cmpr_dept_vmdb.elite_hist_detail as elite_hist
where instant_elt_promo_cd in ('F1', 'F2', 'F3') and 
      exists (select 1 
              from cmpr_dept_vmdb.cust_promotion as res_tab
              where res_tab.op_id = elite_hist.op_id and
                    res_tab.instant_elt_promo_cd in ('F1', 'F2', 'F3') and
                    res_tab.regstrn_status_cd = 'R
             );
0 голосов
/ 12 июня 2018

SQL select синтаксис

[SELECT] ...
[FROM] .....
[JOIN] ....
[WHERE] ....
[GROUP BY] .....

Вы, похоже, хотите join вот так.

select elite_hist.op_id
from cmpr_dept_vmdb.elite_hist_detail as elite_hist
inner join 
(
    select distinct op_id
    from cmpr_dept_vmdb.cust_promotion
    where promo_id in ('TB4M40', 'TB4M41', 'TB4M42')
    and regstrn_status_cd = 'R'
) as res_tab;
on res_tab.op_id = elite_hist.op_id
where elite_hist.instant_elt_promo_cd in ('F1', 'F2', 'F3')
...