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

时间:2016-05-05 18:15:56

标签: sql sql-server database

SQL Fiddle目前关于SQL Server代码,所以这里是一个包含.txt的{​​{1}}的保管箱链接,用于创建我使用的模式:

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

我正在学习考试,并在解决一个例子问题。

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

这是我的解决方案:

DDL

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

  

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:5)

由于函数的返回类型为listen,因此需要调用

TABLE

答案 1 :(得分:1)

鉴于你的问题是

  

创建一个函数来计算软件包的总成本   (给定软件包的名称)安装在每个部门中   过去三年。

也许你应该把你的函数重写为标量函数?

 create function total_cost_of_sofpack_in_lst3yrs(@pack_name varchar(20))

 RETURNS decimal(10, 2)  -- or whatever data type 'packcost' is...
 as
 return(
    select sum(packcost)as total_pk_cost
    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