2

解決策があるかどうかを確認したいという興味深い状況があります...同じサーバー上の4つのデータベースに4つのテーブルがあり、すべて同じ構造になっています。

Pnl_IL_2012データベースのdbo.IL_MembershipPnl_NM_2012データベースのdbo.NM_Membership

各テーブルの集計データセットを1つのデータセットに結合したいのですが、(USE [Pnl_IL_2012]-> Go)コンストラクトを使用して、各集計クエリのデータを取得しようとしています。

select * from 
(USE [Pnl_IL_2012]
GO
select 'IL' as PlanID, sum(Contracts_Hlth) as PROD_Contracts_Hlth from dbo.IL_Membership where [month] between '2012-09-01' and '2012-10-31') Q1

ユニオンオール

select * from
(USE [Pnl_NM_2012]
GO
select 'NM' as PlanID, sum(Contracts_Hlth) as PROD_Contracts_Hlth from dbo.NM_Membership where [month] between '2012-09-01' and '2012-10-31') Q2

これらのエラーが発生します:

Msg 156, Level 15, State 1, Line 2
Incorrect syntax near the keyword 'USE'.
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near ')'.
Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'USE'.
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near ')'.

ユニオンをすべてデータベース間で機能させる方法はありますか?組合だけに参加する必要はありません...

4

1 に答える 1

2

GOバッチの終了を通知するため、クエリの途中で使用することはできません。

代わりに、3つの部分の名前を使用してテーブルを参照してください。

Pnl_IL_2012.dbo.IL_Membership

次のクエリを提供します。

select 'IL' as PlanID, sum(Contracts_Hlth) as PROD_Contracts_Hlth 
from Pnl_IL_2012.dbo.IL_Membership 
where [month] between '2012-09-01' and '2012-10-31'

union all

select 'NM' as PlanID, sum(Contracts_Hlth) as PROD_Contracts_Hlth 
from Pnl_NM_2012.dbo.IL_Membership 
where [month] between '2012-09-01' and '2012-10-31'
于 2012-12-11T16:45:17.897 に答える