2015-04-17 35 views
0

我期待在SQL視圖中構建一些邏輯,而且我不完全確定如何去做這件事。基本上我有一個SQL視圖,它需要看[sender_city][receiver_city]來確定[Division]。我認爲這需要成爲一個案例陳述?將案例邏輯構建到SQL中的最佳方法

我將有一個表格來引用[Division]

[Location] [Division] 
Location_1 Division_X 
Location_2 Division_X 
Location_3 Division_X 
Location_4 Division_Y 
Location_5 Division_Z 

這是描述所需的邏輯(sudocode)我最好的嘗試:

If [sender_city] = [Location], then display [Division] 
else if [receiver_city] = [Location], then display [Division] 
else "Other Division" 

我還需要建立一些邏輯如果[sender_city][receiver_city]都指定一個部門,則只需使用[sender_city]部門。

回答

2

您希望左連接到分區表兩次,一次爲發送者,一次爲接收者。 COALESCE將返回第一個非空值,並且還將處理您的規則,即發送者在確定除法時優先於接收者。

SELECT COALESCE(d1.Division, d2.Division, 'Other Division') AS Division 
    FROM SomeTable st 
     LEFT JOIN Divsion d1 
      ON st.sender_city = d1.Location 
     LEFT JOIN Division d2 
      ON st.receiver_city = d2.location 
+0

THANK YOU !!!!!!! – user2860150

+0

喬這正是我正在尋找的。我現在發現了第二個問題,它沒有捕獲所有發件人城市和接收方城市。例如,有些被列爲「紐約市紐約市」或「舊金山加州」。它將這些位置分類爲「其他部門」。有什麼辦法可以匹配這些實例嗎? – user2860150

+0

@ user2860150如果您的分區表中不存在這些確切值,則無法解決此問題。 –