我正在尝试加入4个表格。我想要表A中的所有数据。表A,B,C通过Name列链接。表B,C,D都有ID列。表B将其称为HostID。表C和D将其称为ObjectID。我为这个ID创建了两个连接:
Left Join D on B.HostID = D.ObjectID
Left Join D on C.ObjectID = D.ObjectID
我的查询包含HostID和ObjectID的列。我怎样才能只获得一列?
以下是数据现在的样子。价值来自我上面没有提到的第五张表。值表链接在HostID或ObjectID
上Name - HostID - ObjectID - Value
Smith - 123 - Null - 7
Jones - Null - 456 - 3
这就是我希望它看起来像
Name - ObjID - Value
Smith - 123 - 7
Jones - 456 - 3
答案 0 :(得分:1)
尝试这样的方法来拉出哪个值不为空。您也可以使用concatenate
:
Select Name, ISNULL(HostID, ObjectID) as ObjID, Value
From A
Left Join B on A.Name = B.Name
Left Join C on A.Name = C.Name
Left Join D on ISNULL(B.HostID, C.ObjectID) = D.ObjectID
Left Join E on D.ObjectID = E.ObjectID
ISNULL
将返回HostID
,除非HostID
为空,在这种情况下它将返回ObjectID
。