将来自不同数据库的数据整理到相同的输出窗口中

时间:2017-05-11 15:39:55

标签: 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.table 
GROUP BY item_id ORDER BY itemcount_bd2

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

1 个答案:

答案 0 :(得分:1)

例如,您可以使用sp_MSforeachdbpotential better one by Aaron Bertrand,这样就不必复制和粘贴所有脚本。我不确定你是否希望结果在这里横向移动,而只是创建一个带有DB标志的列。以下是使用UNION和CTE的方式(因为您需要TOP的订单)。

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