複数のテーブル(MainTbl)から選択しますが、結果セット(StateTbl)に基づいてテーブルが選択されます。ループからのSELECT変数のパスを渡す
MainTables dbo.TABLE_MO
、dbo.TABLE_CA
、dbo.TABLE_AL
、dbo.TABLE_MI
は、あなたを構築する代わりに、あなたはダイナミック活用できるループとStateTblの結果セットStateTbl MO
、CA
、WA
Declare @Loop_Count int = 0
DECLARE @State varchar(2)
DECLARE @SQL varchar(max)
DECLARE db_cursor CURSOR FOR SELECT State FROM StateTbl
OPEN db_cursor
FETCH db_cursor INTO @State
WHILE (@@FETCH_STATUS = 0)
BEGIN
SET @SQL =
'
dbo.TABLE_'+ @State +'
'
EXEC(@SQL)
SET @Loop_Count = @Loop_Count + 1
FETCH db_cursor INTO @SQL
END
CLOSE db_cursor
DEALLOCATE db_cursor
EXEC(@SQL)はテーブルからどのように選択する必要がありますか? '@ SQL'はテーブルの名前だけを含みます。あなたは 'SET @SQL = 'SELECT * FROM dbo.TABLE _' + @State + '''をやってはいけませんか? –
可能重複:https://stackoverflow.com/questions/20054854/tsql-select-from-different-table-based-on-a-case-value –
このためにループは必要ありません。 –