2017-10-04 24 views
0

from句のselect文では、パラメータによってテーブル名が変わります。 私は試しました:パラメータに基づいてfrom句のテーブル名を変更するにはどうすればよいですか?

from 
IIf(@prmdataVal ='Dummy', tbl1, tbl2) T1 

これはエラーを示しています。これを行う方法?

+0

すでに、動的SQLを使用しようとしましたか?動的SQL以外のクエリのfrom部分を変更することはできません。 – Tyron78

+0

[Table name as variable](https://stackoverflow.com/questions/2838490/table-name-as-variable)の重複が考えられます。または(それは常に正確にそれらの2つのテーブル)[この1つ](https://stackoverflow.com/q/7533539/4137916)。 –

+0

この種のパターンは、一般に、データベースモデリングの問題を示します –

答えて

2

次のような何か試してみてください:

DECLARE @stmt nvarchar(max); 
SELECT @stmt = 'SELECT * FROM ' + CASE WHEN @prmdataVal = 'Dummy' THEN 'tbl1' ELSE 'tbl2' END 
EXEC @stmt 
0

は、テーブル名の変数を宣言してから、動的SQLのFROM句でそれを呼び出すには、働いていました。

Declare @TblName AS SYSNAME = CASE WHEN @prmdataVal='Dummy' THEN 'tbl1' 
ELSE 'tbl2' end 

、その後、動的SQLでそれを呼び出す:

from '[email protected] +' as T1... 
関連する問題