J'ai une fonction SQL qui renvoie le prix de vente minimum et maximum d'un article. Je voudrais faire une requête qui obtient d'autres colonnes StockItem avec son prix de vente
ainsi:
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
Cependant cela donne une erreur:
Msg 4104, niveau 16, état 1, ligne 12 L'identificateur en plusieurs parties "i.StockItemID" n'a pas pu être lié.
- Utiliser la déclaration de cas dans Join
- SQL Impossible d'insert une valeur explicite pour la colonne d'identité dans la table 'Table' lorsque IDENTITY_INSERT est défini sur OFF
- Architecture logicielle et design de database: Une database / application web par entreprise ou une database / application web pour toutes les entresockets?
- Existe-t-il un outil pour voir les requêtes s'exécuter sur la database?
- Comment returnner une valeur à un sqldatareader si la valeur est null?
une idée de comment je peux le faire?
Merci d'avance
Si c'est une fonction de table, vous pouvez utiliser 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
De MSDN :
L'opérateur APPLY vous permet d'appeler une fonction table pour chaque ligne renvoyée par une expression de table externe d'une requête.