我试图将两个查询结果组合在一起,其中两个表都存在于不同的数据库中,如下所示:
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 :(得分:3)
您正在寻找3部分命名吗?如果是这样,这可能会奏效:
select (select COUNT(DISTINCT BaseVehicleID)
from BaseVehicle
) as Old,
(Select COUNT(DISTINCT BaseVehicleID)
from [EnhancedStandard_VCDB_Exported_PRD_3006].dbo.BaseVehicle
) New
答案 1 :(得分:1)
您可以使用UNION ALL
将两个查询的结果组合在一个结果集中。
考虑到您引用托管在同一SQL Server实例上的数据库,如果不是,则需要使用链接服务器(例如LinkedServerName.DatabasName.SchemaName.TableName
)引用远程服务器上的表。
如果您同时使用同一服务器上的两个数据库,则可以使用以下查询,提醒,我认为您的表格属于默认架构,即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;
答案 2 :(得分: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
答案 3 :(得分:0)
如果您的其他数据库位于其他服务器中,则需要创建链接服务器并按照以下查询:
SELECT(SELECT count(*)FROM [serverName]。[DatabaseName] .dbo.TableName) +
(SELECT count(*)FROM [serverName]。[DatabaseName] .dbo.TableName)