我在寫一些SQL來收集結果。然而,結果存儲在多個數據庫(每年),例如。 [Results2015],[Results2016],[Results2017]。SQL數據庫通配符
由於所有表名在每個數據庫中都是相同的,所以我可以將這些全部組合在一起。
我的問題是當我們來到2018年會有一個新的數據庫[Results2018]。有沒有辦法通過使用類似於通配符等的[Results20]來從數據庫收集信息,因此不必每年通過添加另一個聯合來更改SQL。
任何幫助將不勝感激。
我在寫一些SQL來收集結果。然而,結果存儲在多個數據庫(每年),例如。 [Results2015],[Results2016],[Results2017]。SQL數據庫通配符
由於所有表名在每個數據庫中都是相同的,所以我可以將這些全部組合在一起。
我的問題是當我們來到2018年會有一個新的數據庫[Results2018]。有沒有辦法通過使用類似於通配符等的[Results20]來從數據庫收集信息,因此不必每年通過添加另一個聯合來更改SQL。
任何幫助將不勝感激。
您可以創建一個選擇查詢作爲您擁有的每個表或數據庫的集合,並且可以在其後使用或插入本地臨時表中。在此之後它成爲您獨特的數據源。
例:
Declare @mydata table (name varchar(50), country varchar(10), population int)
insert @mydata
Select col1 as name, col2 as country,col5 as population from new_york.dbo.table_a
union all
Select col3, col12, col55 from Pittsburgh.dbo.table_t
union all
Select col1, col2,col5 from Rio.dbo.table_ab
-- after it just use @mydata as data source
我希望它幫你,一路走好
使用動態SQL:
declare @MytabName varchar(128)
declare @v_sql varchar(max)
declare @cnt integer = 1
while @cnt < datepart("y", getdate())-2000
loop
set @MytabName = 'Results20' + @cnt
set @v_sql =
'insert into ' + @MytabName + '
select t1.stuff
from [db].[schema].[table] t1
where t1.SomeColumn = ''SomeValue'' '
EXECUTE sp_executesql @v_sql
set @cnt = @cnt+1
end
哪個[DBMS](https://en.wikipedia.org/wiki/DBMS)你在用嗎? Postgres的?甲骨文? –
您是否嘗試過使用動態sql? – Jonny
Microsoft T-SQL –