データベースに新しいテーブルを作成する複数のテーブルが更新されています(まれにしかありません)。私はケース関数を使用してこれらの歴史的なテーブルを照会するように私のレポートを更新する必要があります。私が提供しなければならないレポートの数を考えると、これは長時間の練習であり、長時間のケースステートメント&の完全な外部結合のため、おそらく私のレポートがパフォーマンスが悪いことを意味するものです。何らかのワイルドカードを使用して、これらの名前のついたテーブルを調べてデータを抽出することを望んでいました(すべての列に同じ名前が必要です)。そのため、データベースが更新されるたびに、すべてのクエリを書き換えます。例えばSQL Server動的SQLで複数の同じ名前のテーブルから同じ列を選択する
Table1.PaymentStatus
Table1.Amount
Table2.PaymentStatus
Table2.Amount
....
TableX.PaymentStatus
TableX.Amount
は私が必要となるフィールドです - >
Payment Status Amount
All Data All Data
うまくいけば、私は連合のすべてを含む動的SQLのいくつかの並べ替えを作成することができ、その後、私のテーブルの残りの部分にサブクエリのこの種をリンクします。私は動的SQLに関する多くの経験がありません、&フォーラムでこの質問を見つけました&それを適応しようとしています(と同時に学ぶ!)しかし、多くの運がないです。
declare @columns table (idx int identity(1,1), table_name varchar(100), column_name varchar(50))
insert into @columns (table_name, column_name)
select table_name, column_name
from INFORMATION_SCHEMA.COLUMNS
where table_name like '%Special%'
declare @sql nvarchar(4000)
declare @i int
declare @cnt int
declare @col varchar(100)
declare @table varchar(100)
select @i = 0, @cnt = max(idx), @sql = '' from @columns
select *
from @columns
while @i < @cnt
begin
select @i = @i + 1
select @col = column_name, @table = table_name from @columns where idx = @i
if len(@sql) > 0
select @sql = @sql + ', '
select @sql = @sql + '[' + @table + '].[' + @col + '] as [' + @table + '_' + @col + ']'
end
select @sql = 'select ' + @sql + ' from *'
exec sp_executesql @sql
私は、ビューを作成し、私はこのビューに更新が発生するたびに更新する必要がありますので、このビューに私のクエリを結ぶが、より自動ソリューションがあったかどうかと思いましに関する別の提案をしました。私はこれらのコピーが残念ながら作成される方法を制御できません。
ありがとうございます!