【问题标题】:Lookup values within nested sql command在嵌套 sql 命令中查找值
【发布时间】:2019-05-06 14:49:05
【问题描述】:

我们需要根据不同列中的特定条件映射某些值,然后进一步需要在不同的表中进行查找以获取值 例如 表一

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 语句开始,我能够让 Headquarters1 工作,但是我试图找到如何编写可能嵌套的 sql 或另一种替代方法,以从 case 语句输出和表 2 中的查找值中获取总部 1 的值以填充 globalhqno。

【问题讨论】:

  • 我看不出你想要的结果和你的样本数据之间的关系。
  • 您似乎在使用 v2 for ny03.......我们

标签: mysql sql nested


【解决方案1】:

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

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

【讨论】:

  • 谢谢安德鲁,上面的语法让它对我有用。
猜你喜欢
  • 1970-01-01
  • 2019-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 2021-02-25
  • 2019-08-15
  • 1970-01-01
相关资源
最近更新 更多