2017-05-11 16 views
1

複数の異なるデータベースソースからの同じ出力ウィンドウ内の異なる列にデータを表示する必要があります。必要に応じてこのデータをファイルに出力しても問題ありません。出力は、二つの連続して別々のウィンドウにならないようにするためのDBのI何百通り(異なるデータベースのデータを同じ出力ウィンドウに照合

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 

とシングルをしたい:例えば私は、同一のスキーマを持つデータベース上で実行する必要がある次のスクリプトを持っていると言いますコピーアンドペースト)。個々のスクリプトをすべて作成してデータを取得して、何とかそれらを結合するだけでいいです。

答えて

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