我需要根据另一个表中的值来决定应该在连接语句中使用哪个表
我尝试使用 CASE
和 COALESCE
但无法取得任何成功。
- TableA 有 A 和 B 和 C 以及许多其他列
- TableB 有 ID 和 NAME 列
- TableC 有 ID 和 NAME 列
我的选择语句是;
从表 A A 中选择 A.D、A.E、A.F
如果 A.E = 1
则应使用以下连接
左外连接 TableB B ON A.B = B.ID
和B.NAME
应该在select语句中返回
如果 A.E = 2
则应使用以下连接
左外连接 TableC C ON A.B = C.ID
和C.NAME
应该在select语句中返回
最佳答案
只需将您的条件添加到连接中,然后使用 case 语句将正确的字段拉到您的结果集中,例如
select A.D, A.E, A.F
, case when B.[Name] is not null then B.[Name] else C.[Name] end [Name]
from TableA A
left outer join TableB B ON A.B = B.ID and A.E = 1
left outer join TableC C ON A.B = C.ID and A.E = 2
关于sql - SQL Server 中的条件连接依赖于其他表值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57366388/