簡體   English   中英

查詢以基於其他列獲取最接近的匹配值

[英]Query to get closest match value based on other columns

基於下面的表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,但不確定如何啟動。 請真誠的感謝您的幫助。

謝謝!

在subquery.or中或與create一起使用所有默認值的內聯視圖。 然后外部聯接到那些默認值。

我首先創建了一個名為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子句中使用子查詢,因此這種情況更易於處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM