基于下面的表1,我试图编写一个查询,使我可以创建一个新表,并根据城市,国家和地区填写最匹配的空公司ID。
表1是样本表,而表2是预期输出。
表1
Cust | City | Country | Region | CompanyID
ABC | KL | MY | APAC | 123456
ABC | KL | MY | APAC |
ABC | JB | MY | APAC |
ABC | SY | AU | APAC | 778899
ABC | ME | AU | APAC |
GHI | DB | AE | EMEA | 112233
GHI | AD | AE | EMEA |
表2
Cust | City | Country | Region | CompanyID
ABC | KL | MY | APAC | 123456
ABC | KL | MY | APAC | 123456
ABC | JB | MY | APAC | 123456
ABC | SY | AU | APAC | 778899
ABC | ME | AU | APAC | 778899
GHI | DB | AE | EMEA | 112233
GHI | AD | AE | EMEA | 112233
有点像VLOOKUP的东西,但不确定如何启动。请衷心感谢您的帮助。
谢谢!
答案 0 :(得分:0)
在子查询中。或与所有默认值的创建内联视图一起使用。然后外部联接到那些默认值。
我首先创建了一个名为usr_test_table的表,该表具有与上述相同的数据。并且请注意,我的数据库是oracle,所以请不要对“ from dual”感到困惑。那是oracle中的一个特殊表,每一行一行。
select t1.cust, t1.city, t1.country, t1.region,
case
when t1.companyid is not null then t1.companyid
else (
select max(companyid)
from usr_test_table t2
where t2.country = t1.country
)
end companyid
from usr_test_table t1
它比之前关于外部连接到内联视图的注释要简单一些。由于现在数据库允许在select子句中使用子查询,因此这种情况更易于处理。