Insert into #Temp(Rownumber, Percentage)
select RowNumber,
(MatchFirstName.PercentMatch * FunctionWeights.FunctionWeight)
from dbo.MatchFirstName(@FirstName), dbo.FunctionWeights
where FunctionWeights.FunctionName = 'MatchFirstName'
在FunctionWeights
表中,我有weights
列和FunctionName
列,用于存储不同的函数名称。
dbo.MatchFirstName(@FirstName)
是这里的TVF。现在,我有一个名为FunctionWeights
的表,它存储与这些函数名对应的常量值。
在将值插入Temp
列中的Percentage
表之前,我希望它检索与select语句所具有的函数名对应的常量值,并将其乘以从中检索的百分比值功能。我怎么能这样做?
使用上述查询,不会在Temp表的百分比列中检索乘法值,而只会从TVF中检索PercentageMatch
值。
快照: 功能重量表
在插入
后从#Temp中选择*
百分比列应该有100乘以FunctionWeights.FunctionWeight的值。但相反,它在所有列中都有100个。
答案 0 :(得分:0)
MatchFirstoName的FunctionWeight是1,所以乘以它并没有任何区别。如果MatchFirstName在PercentMatch中返回100,那么所有行都将为100。
如果你有select的固定函数名,你可以在select之前将FunctionWeight提取到变量中。
答案 1 :(得分:0)
您可能应该为您的TVF添加别名并使用它来访问该列,因为from子句中对TVF的引用包含其中的参数,而Select子句中的参数不包括。
Insert into #Temp(Rownumber, Percentage)
select RowNumber,
(T.PercentMatch * FunctionWeights.FunctionWeight)
from dbo.MatchFirstName(@FirstName) T, dbo.FunctionWeights
where FunctionWeights.FunctionName = 'MatchFirstName'