我希望调用函数以防万一,但是当我调用函数时,我得到一个错误。 我的代码是:
s = case
when v.IsAverage=1 then
isnull(avg([Value]),0)
when v.IsCumulative=1 then
isnull(sum([Value]),0)
when v.IsCumulative=0 then
GetLastValueTest('93/.1/01','93/12/29')
我收到此错误:
'GetLastValueTest'不是公认的内置函数名称。
但是当我这样打电话时它会起作用:
select * from GetLastValueTest('93/.1/01','93/12/29')
答案 0 :(得分:4)
从GetLastValueTest中选择*(' 93 / .1 / 01',' 93/12 / 29')
GetLastValueTest
看起来像一个表值函数
然后在case
语句中使用它的正确方法是:
case
when v.IsAverage=1 then isnull(avg([Value]),0)
when v.IsCumulative=1 then isnull(sum([Value]),0)
when v.IsCumulative=0 then (select top 1 [ColumnName] from GetLastValueTest('93/.1/01','93/12/29'))
end
答案 1 :(得分:2)
假设您的GetLastValueTest
是标量函数 - 您需要明确指定架构,即dbo.GetLastValueTest('93/.1/01','93/12/29')
(或者如果它与dbo
不同,则为架构的任何内容)
如果您的GetLastValueTest
是表值函数,那么您无法在case
的其他分支中混合使用标量值进行选择。在这种情况下,你需要像
when v.IsCumulative=0
then (select top 1 some_value from dbo.GetLastValueTest('93/.1/01','93/12/29'))