【发布时间】:2019-03-27 14:31:35
【问题描述】:
我有以下 2 个表:
表1:
User-ID Country
1111 USA
2222 Brazil
3331 USA
3332 Korea
3333 Korea
3333 USA
3333 France
4444 UK
表2:
User-ID Country Region
1111 USA NA
2222 Brazil SA
3331 Korea A
3332 Korea A
3333 N/A N/A
3330 France E
4444 UK E
我想使用“用户 ID”作为公共键加入两个表,但有一个例外。
我想要的结果是,当用户 ID 为“3333”时,我希望“国家/地区”仅作为公用键。
我尝试了以下 ncode,根据我的理解,这听起来合乎逻辑,但没有返回期望的结果:
Select T1.User-ID, T1.Country, Case When T1.User-ID ='3333' AND T1.Country =
T2.Country THEN T2.Region ELSE T2.Region END
From Table1 as T1 Left Outer Join
Table2 as T2 ON T1.User-ID = T2.User-ID OR T1.Country = T2.Country
我尝试了一些其他方法但没有成功,我将得到的结果如下:
- 用户 ID 3333 的空区域
- USer-ID 3333 的重复行 而 3333 以外的记录将返回预期结果。
【问题讨论】:
-
THEN T2.Region ELSE T2.Region END那么为什么要使用CASE表达式,因为在这两种情况下它都会返回T2.Region值?还是只是一个错字? -
@Sami 这是一个不必要的代码,我在更改条件后忘记删除它,因为它不影响结果而错过了它。谢谢:)
标签: sql sql-server database