2013-01-11 10 views
5

Ho una funzione SQL che restituisce il prezzo minimo e massimo di vendita di un articolo. Mi piacerebbe fare una query che ottiene altre colonne StockItem con il suo prezzoSQL Server che passa le colonne della tabella al parametro di una funzione

in questo modo la vendita:

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 

Tuttavia, questo dà un errore:

Msg 4104, Level 16, State 1, Line 12 The multi-part identifier "i.StockItemID" could not be bound.

alcuna idea di come posso Fai questo ?

Grazie in anticipo

risposta

19

se questa è una funzione con valori di tabella, quindi è possibile utilizzare 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:

The APPLY operator allows you to invoke a table-valued function for each row returned by an outer table expression of a query.

+0

grandi Grazie :) – Jonny

Problemi correlati