2014-02-28 84 views
0

我有51個表(在單個數據庫中)具有51個美國州的相同列和模式。我所要做的就是對所有51個表執行相同的查詢。每個狀態的結果都應該返回到新表中,並使用這樣的表格格式。對數據庫中的多個表執行相同的查詢

Eg. Table name : TX_EED 
    New Table name :TX_EED_v0 

以下是我會爲每個狀態運行查詢:

Select distinct a.Geoid, Lat, Long, StateCode, CountyCode, PostalCode,StrVal_SFD ,StrVal_MFD,StrVal_MH from EED2013..TX_EED a 
inner join 
(Select Geoid, 
SUM(case when LOBNAME ='SFD'THEN CvgAval_MinThresh else 0 end) as StrVal_SFD, 
SUM(case when LOBNAME ='MFD'THEN CvgAval_MinThresh else 0 end) as StrVal_MFD, 
SUM(case when LOBNAME ='MH'THEN CvgAval_MinThresh else 0 end) as StrVal_MH 
FROM EED2013..TX_EED group by Geoid) b 
on a.Geoid =b.Geoid-------7,473,869 
+1

真正的問題是:爲什麼你有51個表格而不是一個表格,其中有一個表示狀態的字段? –

+0

+1 Thorsten,但有時它不在你的控制之下,數據庫是在你有任何輸入之前做出的......但是,我不確定這裏的問題是什麼......他知道他必須做什麼...... – TheOneWhoPrograms

回答

2

如果你有51臺具有相同的架構,那麼你真的應該有一個表。順便說一下,根據美國郵政局的數據,在美國有超過「五一」州等同物 - 特區,波多黎各,關島,美屬維爾京羣島和各種軍事地址都算作「州」(我認爲美國人口普查)。

在任何情況下,創建一個視圖:

create view v_AllStates as 
    select ak.* 
    from data_al union all 
    select al.* 
    from data_al union all 
    . . . 
    select wy.* 
    from data_wy; 

然後,您可以使用您的查詢,這個視圖,想必簡化你的生活。

+1

。 ..這將允許他然後切換到使用這個視圖(隨着時間的推移),讓他創建一個新的表(... ....理想地用相同的名稱......)與相同的數據,然後只是刪除舊桌子。 –

相關問題