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.

Était-ce utile?

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top