2017-08-02 56 views
0

我想兩個查詢結果合併到一個地方兩個表存在於不同的數據庫中象下面這樣:SQL結合2個查詢引導到一個地方2個查詢是從不同的數據庫

select 
    (select COUNT(DISTINCT BaseVehicleID) as BVOld 
    from BaseVehicle) Old, 
    (select COUNT(DISTINCT BaseVehicleID) as BVNew 
    from [EnhancedStandard_VCDB_Exported_PRD_3006].BaseVehicle) New 

這裏[EnhancedStandard_VCDB_Exported_PRD_3006]是不同的數據庫

這樣我需要驗證兩個數據庫中的記錄數。

我可以在來自同一數據庫的查詢之間合併記錄。

有人可以告訴如何結合來自2個數據庫的2個查詢的結果。

+0

你是什麼意思*結合*的結果? –

+2

要在同一個實例中引用另一個數據庫,它是[DBName]。[Schema]。[TableName]如果它在另一個實例中,則需要創建一個鏈接服務器。 – Leonidas199x

+0

基於第二個選擇'[EnhancedStandard_VCDB_Exported_PRD_3006]''schema'名稱不是數據庫名稱 –

回答

3

您正在尋找3部分組成的命名?如果是這樣,這將可能工作:

select (select COUNT(DISTINCT BaseVehicleID) 
     from BaseVehicle 
     ) as Old, 
     (Select COUNT(DISTINCT BaseVehicleID) 
     from [EnhancedStandard_VCDB_Exported_PRD_3006].dbo.BaseVehicle 
     ) New 
+0

謝謝您回答該解決方案。在閱讀查詢中的表格時,我錯過了模式名稱。 – Manju

1

您可以使用UNION ALL將兩個查詢的結果組合在一個結果集中。

考慮到您指的是託管在相同SQL Server實例上的數據庫,如果不是,您需要使用鏈接服務器引用遠程服務器上的表,如LinkedServerName.DatabasName.SchemaName.TableName

如果你在同一臺服務器上有兩個數據庫,你可以使用下面的查詢,alert,我正在考慮你的表在默認模式下,即dbo

Select COUNT(DISTINCT BaseVehicleID) as BVOldCount 
from BaseVehicle 
UNION ALL 
Select COUNT(DISTINCT BaseVehicleID) as BVNewCount 
from [EnhancedStandard_VCDB_Exported_PRD_3006].dbo.BaseVehicle; 

或者

Select COUNT(DISTINCT BaseVehicleID) as BVOldCount, 'BVOldCount' as Type 
from BaseVehicle 
UNION ALL 
Select COUNT(DISTINCT BaseVehicleID) as BVNewCount, 'BVNewCount' as Type 
from [EnhancedStandard_VCDB_Exported_PRD_3006].dbo.BaseVehicle; 
0

試試這個:

SELECT COUNT(DISTINCT Base.BaseVehicleID) AS BVNew , 
     Old.BVOld 
FROM [EnhancedStandard_VCDB_Exported_PRD_3006].BaseVehicle AS Base 
     CROSS APPLY (SELECT COUNT(DISTINCT B2.BaseVehicleID) AS BVOld 
         FROM  BaseVehicle AS B2 
        ) Old 
GROUP BY Old.BVOld 
0

如果你的其他數據庫在其他服務器,您需要創建鏈接的服務器,並按照下面的查詢:

SELECT (SELECT COUNT(*)FROM [服務器]。[數據庫名] .dbo.TableName) +

(SELECT FROM [服務器] COUNT(*)。[數據庫名] .dbo.TableName)