SQL Join将两列合并为一列

时间:2015-08-07 16:24:19

标签: sql

我正在尝试加入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

1 个答案:

答案 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