在SQL语句中将不明确的列左键联接到一列中?

在SQL语句中将不明确的列左键联接到一列中?,sql,sql-server,Sql,Sql Server,是否可以在T-SQL语句中将两列性质相同的列LEFT JOIN,即将t2.Name和t3.Name合并为一列(dataproperty)Name SELECT t1.ID, t1.RowID, t2.name, t3.Name FROM MasterTable T1 LEFT OUTER JOIN RightTable1 T2 ON T1.RowID = T2.ID LEFT OUTER

是否可以在T-SQL语句中将两列性质相同的列
LEFT JOIN
,即将
t2.Name
t3.Name
合并为一列(dataproperty)
Name

SELECT t1.ID,
       t1.RowID,
       t2.name, 
       t3.Name 
  FROM MasterTable T1 
       LEFT OUTER JOIN RightTable1 T2 
            ON T1.RowID = T2.ID 
       LEFT OUTER JOIN RightTable2 T3 
            ON T1.RowID = T3.ID 
 WHERE t1.ID= " & ID & ";
…还是我必须将表加载到单独的数据集中,并通过编程方式(针对每个…下一个)将它们连接到新的数据集中

问候,


伦敦银行同业拆借利率取决于你所说的“加入”是什么意思——这里有几种可能性:

如果一个为空,另一个不为空,请使用
ISNULL

SELECT DISTINCT 
       t1.ID,
       t1.RowID,
       ISNULL(t2.name, t3.Name) Name
FROM MasterTable T1 
LEFT OUTER JOIN RightTable1 T2 on T1.RowID = T2.ID 
LEFT OUTER JOIN RightTable2 T3 on T1.RowID = T3.ID 
如果要连接它们,请执行以下操作:

SELECT DISTINCT 
       t1.ID,
       t1.RowID,
       t2.name + t3.Name Name
FROM MasterTable T1 
LEFT OUTER JOIN RightTable1 T2 on T1.RowID = T2.ID 
LEFT OUTER JOIN RightTable2 T3 on T1.RowID = T3.ID 
如果需要两行(一个并集):


请注意,DISTINCT是必要的,因为除非您可以关联T2和T3,否则您基本上会在T2和T3之间进行交叉连接(笛卡尔积),因此您需要消除创建的重复项。

您可以将两个字段连接成一个字段,而不要忘记放置isnull子句。我想你们可以在两个表之间连接起来……啊,我从来没有这样做过,但我在下面的回答中看到了一个例子,谢谢。我在操作中没有看到交叉连接。太好了!在我的例子中,始终只有一个值,仅在一个表中(有5个表要连接!)。我将使用ISNULL来处理dbnull值。非常感谢…在我的例子中没有重复项,因为在我加入的5个表中ID是唯一的,这意味着总是只有一个条目(在5个表中的某个地方)与ID匹配。这并不容易,但工作结果是:CONCAT(IFNULL(t2.name.)、IFNULL(t3.name.))作为名称。很抱歉,这个数据库是MySQL,不是MS SQL(我正在处理这两个数据库,并且在最初的帖子中犯了错误)。
SELECT DISTINCT 
       t1.ID,
       t1.RowID,
       t2.name + t3.Name Name
FROM MasterTable T1 
LEFT OUTER JOIN RightTable1 T2 on T1.RowID = T2.ID 
LEFT OUTER JOIN RightTable2 T3 on T1.RowID = T3.ID 
SELECT DISTINCT 
       t1.ID,
       t1.RowID,
       t2.Name
FROM MasterTable T1 
LEFT OUTER JOIN RightTable1 T2 on T1.RowID = T2.ID 
UNION ALL
SELECT DISTINCT 
       t1.ID,
       t1.RowID,
       t3.Name
FROM MasterTable T1 
LEFT OUTER JOIN RightTable2 T3 on T1.RowID = T3.ID