嵌套sql命令中的查找值

时间:2019-05-06 14:49:05

标签: mysql sql nested

我们需要根据不同列中的特定条件映射某些值,然后还需要在不同的表中进行查找以获取值 例如 表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的定义。是 在表2中查找总部1的值并找到值

最终输出

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

我从case语句开始,我能够使quarter1正常工作,但是我试图找到如何编写可能嵌套的sql或另一种方法,以便从case语句输出和表2中的查找值中获取quarter1的值,以填充globalhqno。

1 个答案:

答案 0 :(得分:0)

您需要根据规则派生一列,然后在联接中使用它。

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