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

时间:2013-01-11 14:29:31

标签: sql sql-server sql-server-2008 tsql

我有一个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

但是这会产生错误:

  

消息4104,级别16,状态1,行12多部分标识符   “i.StockItemID”无法受约束。

我知道如何做到这一点?

提前致谢

1 个答案:

答案 0 :(得分:21)

如果这是表值函数,那么您可以使用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

From MSDN

  

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