将案例逻辑构建到 SQL 中的最佳方法

Best way to build case logic into SQL

我希望在 SQL 视图中构建一些逻辑,但我不确定如何着手进行此操作。基本上我有一个 SQL 视图,它需要查看 [sender_city][receiver_city] 以确定 [Division]。我认为这需要是一个案例陈述??

我会有一个table来参考[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] 分区。

您想两次左加入部门 table,一次是发送者,一次是接收者。 COALESCE 将 return 第一个非空值,并且还将处理您的规则,即在确定除法时发送方优先于接收方。

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