我被要求基本上编写一份报告,以显示两个不同数据库中的数据,并能够在两个数据库中查看是否缺少某些内容。
IE,发票编号可能存在于database1中,但不存在于database2中,反之亦然。
我在下面有以下查询,但它仅返回第二个表中的所有数据,第一个表为NULL值。我想将其设置为同时返回两者中的NULL值,但是我认为问题是因为我的联接位于可以为NULL的值上,所以它不会返回第一个表中存在的值,而不会返回第二个。
有人可以指导我解决此类问题吗?
据我所知,除非我尝试从每个数据库中联接更多的表,否则不必联接任何其他表。 查询:
Select TC.PO_Number, TC.Invoice_Date, TC.Invoice_, H.RefPoNum, H.InvoiceNum
From Table1 TC
RIGHT JOIN [SERVERNAME].[DBNAME].[TABLE2] H ON (TC.Invoice_ = H.InvoiceNum)
Where TC.Invoice_Date Between '2018-10-31' AND '2018-10-31'
AND H.Company Like 'COMPANY'
答案 0 :(得分:0)
您可以使用full join
做您想做的事。使用full join
进行过滤非常棘手,因此我建议您使用子查询:
select tc.PO_Number, tc.Invoice_Date, tc.Invoice_, h.RefPoNum, h.InvoiceNum
From (select tc.*
from Table1 tc
where tc.Invoice_Date Between '2018-10-31' AND '2018-10-31'
) tc full join
(select h.*
from [SERVERNAME].[DBNAME].[TABLE2] h
where h.Company Like 'COMPANY'
) h
on TC.Invoice_ = H.InvoiceNum;
答案 1 :(得分:0)
只需确保您要比较的列具有相同的数据类型,就可以在下面安全地使用此查询:
Server01不在Server02中
select t1.InvoiceNumber from server01.dbo.Invoice t1
except
select t2.InvoiceNumber from server02.dbo.Invoice t2
Server02不在Server01中
select t1.InvoiceNumber from server02.dbo.Invoice t1
except
select t2.InvoiceNumber from server01.dbo.Invoice t2
P.S。 虽然这可能不是您要查找的确切查询,但是此模板可能会有所帮助。