2017-10-04 85 views
0

在select語句中,在from子句中,表名稱根據參數而變化。 我想:如何根據參數更改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)可能存在重複。或者(如果它總是那兩個表)[這一個](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的條款,要求它在,工作。

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

,然後調用它的動態SQL:

from '[email protected] +' as T1... 
相關問題