MS SQL: Utiliser la valeur calculée pour calculer d'autres valeurs
-
16-10-2019 - |
Question
Je vais avoir un problème de générer des résultats qui sont calculés à partir des données qui existe dans la base de données. Tel est le cas
Je coupons qui peuvent être ou montant pour cent, si pour cent est 0 montant alors est utilisé
CASE
WHEN c.CouponPercent > 0 THEN p.Price - (c.CouponPercent/100)
ELSE c.CouponValue
END as Coupon
maintenant, je dois calculer pour cent pour un fournisseur de contenu qui est
(p.Price-Coupon)*(ProviderPercent/100)
Comment puis-je utiliser la valeur du coupon de calcul ci-dessus pour calculer pour cent du fournisseur, si je l'utilise comme code ci-dessus erreur est signalée « nom de colonne non valide « coupon » ».
S'il vous plaît aidez-moi, je sais comment résoudre ce sur le chemin difficile qui est de calculer la valeur du coupon chaque fois que le calcul ProviderPercent mais j'ai 8 pourcents comme celui-ci dans un rapport pour différents fournisseurs.
Donc, fondamentalement, la question est de savoir comment utiliser la valeur du coupon calculée pour l'utiliser dans un autre calcul pour un même enregistrement. Coupon est modifié en ce qui concerne le produit, donc je peux être différent pour chaque enregistrement sélectionné la base de données.
La solution
Pouvez-vous pas faire cela avec un CROSS APPLY ?
Autres conseils
Il est simple, la valeur calculée peut être utilisée par l'application d'une valeur avec la croix appliquer
comme celui-ci sélectionnez cpk.coupon, p.prix, p.Price-cpk.coupon comme FinalPrice - etc
from Product -- etc
CROSS APPLY (
select coupon = CASE
WHEN c.CouponPercent = 0 THEN p.Price - (c.CouponPercent/100)
ELSE c.CouponValue
END as Coupon ) as cpk
where --etc