执行SQL Server功能时出现歧义列?

And*_*ler 2 sql database sql-server

SQL Fiddle目前关于SQL Server代码,所以这里是一个.txt包含DDL创建我正在使用的模式的dropbox链接:

https://www.dropbox.com/s/6si4r37449q3ajb/DDL.txt?dl=0

我正在攻读考试并努力解决一个问题.

创建一个函数来计算过去三年中每个部门安装的软件包的总成本(给定软件包的名称).检查名称是否准确.

这是我的解决方案:

 create function total_cost_of_sofpack_in_lst3yrs
    (@pack_name varchar(20))
 returns table
 as
     return(
        select sum(packcost) as total_pk_cost, location
        from package
        inner join software on package.PACK = software.PACK
        inner join pc on software.tagnum = pc.tagnum
        where package.PACKNAME = @pack_name 
          and software.INSTDATE > dateadd(year, -3, getdate())
        group by pc.location)
     go

     select dbo.total_cost_of_sofpack_in_lst3yrs('Manta') as R
Run Code Online (Sandbox Code Playgroud)

创建函数的语句通过,但是当我尝试通过测试场景执行它时,我收到以下错误:

找不到列"dbo"或用户定义的函数或聚合"dbo.total_cost_of_sofpack_in_lst3yrs",或者名称不明确.

谢谢你的帮助.

Aru*_*mar 5

由于返回类型TABLE来自函数,因此需要调用as

SELECT * FROM dbo.total_cost_of_sofpack_in_lst3yrs('Manta') 
Run Code Online (Sandbox Code Playgroud)