我需要一个 select 语句,它在其 from 子句中运行另一个 select 语句,结果(只有一条记录)是外部选择的表名。
为此,我不能使用存储过程、exec 或 @ 变量。
此外,查询文件必须以“select”开头并且只包含该语句。
我知道有更好的方法来完成最终结果,但是供应商的向导认为查询必须通过嗅探来运行,而不是单个 select 语句。这很令人沮丧,但这就是我们所要做的。
这是我正在尝试做的一个例子:
select
plan.TransactionID,
plan.PlanName,
sum(plan.Value) as Rate
from
(select 'dbo._Result' + ltrim(str(CalculationID)) from dbo.Calculation where Name =
'TPRL Transaction Plan Rates'
) Plan
当然,这是行不通的。但是,这也不是:
select
plan.TransactionID,
plan.PlanName,
sum(plan.Value) as Rate
from
exec(select 'dbo._Result' + ltrim(str(CalculationID)) from dbo.Calculation where Name = 'TPRL Transaction Plan Rates') Plan
尽管如此,这本身确实会将我想要的表拉回结果集中:
exec(select 'dbo._Table' + ltrim(str(CalculationID)) from dbo.Calculation where Name = 'TPRL Transaction Plan Rates')
我需要做的就是将结果视为上面的文字(如宏替换),但它不是那样工作的。
tsql 中有没有办法做到这一点?