我需要在多个不同数据库源的同一输出窗口中的不同列中显示数据。如有必要,可以将此数据输出到文件中。例如,我说我需要在具有相同模式的数据库上运行以下脚本:
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,并且想要进行单个复制和粘贴)。我很乐意创建所有单独的脚本来获取数据,只需要以某种方式组合它们。
答案 0 :(得分:1)
例如,您可以使用sp_MSforeachdb
或potential 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