数据库 B 和 C 中 Table 的所有行,数据库 A 中只有 Table 的唯一行

All rows from Table in Database B and C, only unique rows from Table in Database A

我需要 select 来自 table 的数据,该数据存在于多个数据库中,这取决于以特定方式排除重复项。数据是这样的,数据库 B 和 C 中的行可能包含与数据库 A 中的行相同的帐户段 (SGMNTID)。如果是这样,我们希望 select 来自 B 或 C 数据库的行并排除该行来自A数据库。

所以我相信这本质上是 B 和 C 中所有内容的 selection 以及与 B 和 C 相比仅来自 A 的唯一行的 selection。

A.DBO.GL40200 
-----
SGMNTID DSCRIPTN
10      ABN Tech
20      ABN Financial
40      Quo USA
41      Quo AUS
62      PO Shanghai

B.DBO.GL40200
-----
SGMNTID DSCRIPTN
40      Quo USA
41      Quo Pt Ltd
60      PO Singapore

C.DBO.GL40200
-----
SGMNTID DSCRIPTN
62      PO Shanghai
63      PO Purchasing

所需的结果集为:

10      ABN Tech
20      ABN Financial
40      Quo USA
41      Quo Pt Ltd
60      PO Singapore
62      PO Shanghai
63      PO Purchasing

从这样的查询开始:

with q as
(

    select 'A' company, * 
    from A.DBO.GL40200
    UNION ALL
    select 'B' company, * 
    from B.DBO.GL40200
    UNION ALL
    select 'C' company, * 
    from C.DBO.GL40200

), q2 as
(
  select *, row_number() over (partition by SGMNTID, order by company desc) rn
  from q
)
select SGMNTID, DSCRIPTN
from q2 
where rn = 1
 SELECT * FROM B
 UNION 
 SELECT * FROM C
 UNION 
 SELECT * FROM A WHERE SGMNTID NOT IN (SELECT SGMNTID FROM B UNION SELECT SGMNTID FROM C)

但是查看您的数据,一个简单的联合也可以工作,因为 UNION 删除重复项。

 SELECT * FROM A
 UNION 
 SELECT * FROM B
 UNION 
 SELECT * FROM C