2015-04-01 123 views
0

我有2個獨立的SQL Server數據庫想查詢和比較結果。如何查詢2個SQL數據庫並比較結果

例如:

DB1

Select * 
from Customers 
where dtcreated > @startdate 

該查詢會給我誰是在特定日期之後創建的客戶名單。

然後,我想採取上述結果,並查詢另一個數據庫(DB2)告訴我哪些上述查詢客戶仍處於活動狀態。

喜歡的東西:

DB2

Select * 
From Customers 
Where bactive = 'True' 
     (and exists in DB1 query) 

有沒有辦法做到這一點?

輸出:

Number of Records from DB1   Number Active in DB2 
     155         67 

回答

1

您可以通過指定數據庫名稱和架構+表名做跨數據庫查詢。

Select * 
From Customers b 
Where bactive = 'True' 
and exists 
(Select 'x' from 
database1.dbo.Customers A 
where a.dtcreated > @startdate 
and a.key = b.key) 

對不起,但我有點困惑的示例querys和示例輸出。但是,使用這種技術,你可以指望任何方式你喜歡

+0

什麼是'和a.key = b.key'? – 2015-04-01 11:48:54

+1

好吧,如果你想檢查數據庫A中是否有客戶存在於數據庫B中,你需要有一個或一組字段加入,以確保你在談論同一個客戶。更具體地說,您如何知道客戶在兩個數據庫 – 2015-04-01 11:50:06

+0

Tom V.中都是一樣的。對不起,我只是想讓你知道我在找什麼。無論如何,你的信息讓我回答我的答案。 a.key = b.key是我嘗試的所有內容中缺失的部分。謝謝! – Shmewnix 2015-04-01 12:03:17

0

你可以試試這個:

Select * 
From db2.dbo.Customers 
Where bactive = 'True' 
and exists(Select * from db1.dbo.Customers where dtcreated > @startdate) 
+0

您必須確保'bactive'和'dtcreated'正確編入索引,或者這個查詢可能在大型表上運行真的很慢 – 2015-04-01 12:00:41