我想将Table_1中的两列合并在一起(即column_A和column_b并在各列之间添加“ |”),这将形成另一列column_c。然后,我想将Table_1中的column_c与Table_2中的column_c合并/合并。这些表在每个表中分别具有不同的列,我想返回所有数据-只有column_c是公共列。
我已经通过使用
合并了两列Select (column_a + '|' + column_b) as column_c from Table_1
但是我很难与table_2中的column_c一起加入。
因此,查询[从trade_id ='45435'的交易中选择经纪人,帐户,trade_id,货币)将返回以下内容:
经纪人帐户trade_id货币 HSBC G-HG4_5 45435 EUR
和查询[从摘要中选择*,例如'G-HG4_5&'的代码将返回
开始日期结束日期代码描述代理类型 2015年5月25日2015年2月14日G-HG4_5 |欧元长贷方
我基本上想合并帐户和货币,使其看起来像第二张表中的“代码”列。合并后,我希望将它们全部放到一个表中,以便可以比较数据。
答案 0 :(得分:1)
您可以直接在JOIN中使用合并列,方法是使用+运算符或Concat运算符进行混叠,如下所示:请尝试以下操作:
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)
侧面注::如果使用+进行连接,则将需要显式处理NULL值检查,因为将无法执行以下操作:
SELECT null + '|' + 'fun';
SELECT 'fun' + '|' + null;
答案 1 :(得分:0)
这听起来像是您要执行的操作:
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
答案 2 :(得分:0)
您可以在连接条件中直接使用串联:
SELECT a.*
FROM Table_1 a
INNER JOIN table_2 b
ON CONCAT(a.column_a,'|',a.column_b)=b.column_c
希望这会有所帮助。