在T-SQL中将2个表合并为1个单表

时间:2019-02-21 23:02:21

标签: sql-server tsql

如何在T-SQL中将2个表合并为1个表?我尝试与完全外部联接合并,这有助于联接2个表,但与“客户帐户”联接2次。我只需要表A和表B中的所有列以及一个“客户帐户字段”,而表A和表B.ields中的其余所有列。

这是我的示例的详细信息:

表A -我的第一个表有5列:

表B -我的第二个表有6列:

我期望这样的输出:

输出表A和表B中的所有字段,但仅公共字段一次:

非常感谢。

2 个答案:

答案 0 :(得分:1)

将t1和t2中的必填(全部)列添加到select语句

SELECT COALESCE(t1.customeraccount, t2.customeraccount) as customeraccount,
t1.BasicCardType,
t2.MonthlySet
FROM table1 t1
FULL JOIN table2 t2 ON t1.customeraccount = t2.customeraccount;

答案 1 :(得分:0)

(根据注释进行编辑):在CustomerAccount ID字段上加入表(为您提供两个表中都存在的条目),然后为仅存在于表A中的所有条目添加一个并集,然后为以下条目添加一个并集:仅存在于表B中。原则上:

-- get entries that exist in both tables
select Table_A.CustomerAccount, TableAField1, TableAField2, TableBField1, TableBField2
from Table_A
join Table_B on Table_A.CustomerAccount = Table_B.CustomerAccount
-- get entries that only exist in table_a
union select Table_A.CustomerAccount, TableAField1, TableAField2, null, null
from Table_A
where Table_A.CustomerAccount not in (select CustomerAccount from Table_B)
-- get entries that only exist in table_B
union select Table_B.CustomerAccount, null, null, TableBField1, TableBField2
from Table_B
where Table_B.CustomerAccount not in (select CustomerAccount from Table_A)