(SQL)如何将两列合并在一起以创建一个新列,然后将该表连接到另一个具有相同新列的表

(SQL)如何将两列合并在一起以创建一个新列,然后将该表连接到另一个具有相同新列的表,sql,sql-server,Sql,Sql Server,我想将表1中的两列合并在一起(即列A和列b,并在列之间添加“|”),这将形成另一列c。然后我想将表1中的列_c与表2中的列_c合并/连接起来。这两个表各自有不同的列,我想返回所有数据——只有列_c是公共列 我通过使用 Select (column_a + '|' + column_b) as column_c from Table_1 但是我很难将它与表2中的列c连接起来 因此,查询[select broker,account,trade_id,currency from transactio

我想将表1中的两列合并在一起(即列A和列b,并在列之间添加“|”),这将形成另一列c。然后我想将表1中的列_c与表2中的列_c合并/连接起来。这两个表各自有不同的列,我想返回所有数据——只有列_c是公共列

我通过使用

Select (column_a + '|' + column_b) as column_c from Table_1
但是我很难将它与表2中的列c连接起来

因此,查询[select broker,account,trade_id,currency from transactions,其中trade_id='45435']将返回以下内容:

经纪人帐户交易id货币 汇丰银行G-HG4_5 45435欧元

查询[select*from summary,其中的代码像'G-HG4_5&')将返回

开始日期结束日期代码描述代理类型 2015年5月25日2015年2月14日G-HG4|5欧元长巴克莱


我基本上希望将帐户和货币组合起来,使其看起来像第二个表中的“代码”列。一旦组合起来,我想把它们放在一个表中,在那里我可以比较数据。

这听起来像是你要做的:

SELECT * 
FROM TABLE_2 t2
INNER JOIN 
    (Select *, (column_a + '|' + column_b) as column_c from Table_1) t1
    ON t1.column_c = t2.column_c

您可以直接在连接条件中使用连接:

SELECT a.*
FROM Table_1 a
INNER JOIN table_2 b
   ON CONCAT(a.column_a,'|',a.column_b)=b.column_c

希望这有帮助。

您可以使用+运算符或Concat运算符直接在JOIN中使用合并列,如下所示:请尝试以下操作:

SELECT t1.column_a, t2.column_b, t2.column_c -- add either * or columns list of your choice here
FROM TABLE_2 t2
INNER JOIN t1 ON  t2.column_c = (ISNULL(t1.column_a, '') + '|' + ISNULL(t1.column_b, '')) -- t2.column_c = concat(t1.column_a, '|', t1.column_b)
旁注:如果使用+进行连接,则需要显式处理空值检查,因为以下内容将不会执行:

SELECT null + '|' + 'fun';
SELECT 'fun' + '|' + null;

你好,Satish Patel,欢迎来到Stack Overflow!请以表格形式提供表格和预期结果的样本数据。数据胜于雄辩。你试过什么吗???“我已设法合并…”我没有看到与此问题一起发布的查询。您能为您的解决方案添加解释吗!?