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