SQL Server将表列传递给函数的参数

Jon*_*nny 7 sql t-sql sql-server sql-server-2008

我有一个SQL函数,它返回一个项目的最低和最高售价.我想创建一个查询,其中包含其他StockItem列以及它的售价

像这样:

SELECT i.StockItemID ii, 
       i.Name, 
       i.Code, 
       pli.SellingPrice AS MinSellingPrice,
       pli.StandardSellingPrice AS MaxSellingPrice,
       i.WebDetailedDescription,
       i.WebAdditionalInfo,
       i.FeaturedItemDescription
FROM SC_StockItem AS i, 
     func_GetPrice(17, i.StockItemID, 5) pli
Run Code Online (Sandbox Code Playgroud)

但是这会产生错误:

消息4104,级别16,状态1,行12无法绑定多部分标识符"i.StockItemID".

任何想法我怎么能这样做?

提前致谢

Tar*_*ryn 23

如果这是一个表值函数,那么你可以使用OUTER APPLY:

select i.StockItemID ii, 
  i.Name, 
  i.Code, 
  pli.SellingPrice as MinSellingPrice, 
  pli.StandardSellingPrice as MaxSellingPrice,
  i.WebDetailedDescription, 
  i.WebAdditionalInfo, 
  i.FeaturedItemDescription
from SC_StockItem as i
OUTER APPLY func_GetPrice(17, i.StockItemID, 5) pli
Run Code Online (Sandbox Code Playgroud)

来自MSDN:

APPLY运算符允许您为查询的外部表表达式返回的每一行调用表值函数.