Sql server 将不同数据库中的数据整理到同一输出窗口中

Sql server 将不同数据库中的数据整理到同一输出窗口中,sql-server,database,Sql Server,Database,我需要在同一输出窗口的不同列中显示来自多个不同数据库源的数据。如果需要,可以将这些数据输出到文件中。例如,假设我需要在具有相同架构的数据库上运行以下脚本: SELECT TOP 3 item_id, COUNT(*) as itemcount_db1 FROM DB1.dbo.table GROUP BY item_id ORDER BY itemcount_db1 SELECT TOP 3 item_id, COUNT(*) as itemcount_bd2 FROM DB2.dbo.

我需要在同一输出窗口的不同列中显示来自多个不同数据库源的数据。如果需要,可以将这些数据输出到文件中。例如,假设我需要在具有相同架构的数据库上运行以下脚本:

SELECT TOP 3 item_id, COUNT(*) as itemcount_db1 
FROM DB1.dbo.table 
GROUP BY item_id ORDER BY itemcount_db1

SELECT TOP 3 item_id, COUNT(*) as itemcount_bd2 
FROM DB2.dbo.table 
GROUP BY item_id ORDER BY itemcount_bd2

这样,输出就不会出现在两个连续且独立的窗口中(因为我需要数百个数据库,并希望执行单个复制和粘贴)。我很乐意创建所有单独的脚本来获取数据,只需要以某种方式组合它们

首先,您可以使用
spmsforeachdb
或a,这样就不必复制和粘贴所有脚本。我不确定您是否希望这里的结果是水平的,而是创建一个带有DB标志的列。这里有一种使用
UNION
和CTE的方法(因为您需要
TOP
的order by)

with db1 as(
    SELECT TOP 3 
        item_id, 
        COUNT(*) as itemcount
        ,'DB1'
    FROM 
        DB1.dbo.table 
    GROUP BY 
        item_id
    ORDER BY 
        itemcount_bd2)

db2 as(
    SELECT TOP 3 
        item_id, 
        COUNT(*) as itemcount
        ,'DB2'
    FROM 
        DB2.dbo.table 
    GROUP BY 
        item_id 
    ORDER BY 
        itemcount_bd2)


select * from db1
union all
select * from db2