Поиск значений внутри вложенной команды sql - PullRequest
0 голосов
/ 06 мая 2019

У нас есть потребность, когда мы хотим отобразить определенные значения на основе определенных условий в разных столбцах, а затем дополнительно выполнить поиск в другой таблице для получения значений. например Таблица 1

plant    country   v1      v2      v3      v4      v5      score
ny01       us      123     456     678    abc    def       good
ln01       uk      456     678     abc    def    def       better
ny03       us      def     1233    xxx    999    909       better
ln02       uk      788     4561    ab678  abc    def       good

Таблица 2

lookupcodes       globalhqno 
123                 usxx
456                 US001
abc                 UK001
1233                US022
abc678              UK033

так что определение Штаб-квартиры
когда страна = нас, то это v1
когда страна = великобритания, то это v3

и определение globalhqno. является найдите значения для штаб-квартиры1 в таблице 2 и найдите значения

конечный результат

plant    country   headquarters1      globalhqno 
ny01       us        456                 US001
ln01       uk        abc                 UK001
ny03       us        1233                US022
ln02       uk        4561                UK033

Я начал с оператора case и смог заставить работать headquarters1, однако я пытаюсь найти, как написать, возможно, вложенный sql или другую альтернативу, чтобы получить значения headquarters1 из выходных данных оператора case и значений поиска в таблице 2 для заполнения globalhqno.

1 Ответ

0 голосов
/ 06 мая 2019

Вам нужно получить столбец на основе ваших правил, а затем использовать его в своем объединении.

select
*
from
(
Select
*,
case when country = 'US' then v1 -- or v2, your example isn't clear
when country = 'UK' then V3
end as join_column
from 
<table1>) t1
inner join <table2> t2
  on t1.join_column = t2.lookupcodes
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...