質問

データベースに存在するデータから計算される結果を生成することに問題があります。これは事実です

金額またはパーセントになる可能性のあるクーポンがあります、パーセントが0の場合、量が使用されます

CASE 
  WHEN c.CouponPercent > 0 THEN p.Price - (c.CouponPercent/100)
  ELSE c.CouponValue
END as Coupon

今、私は1つのコンテンツプロバイダーのパーセントを計算する必要があります。

(p.Price-Coupon)*(ProviderPercent/100)

上記のコードのように使用する場合、上記からクーポン値を計算してプロバイダーパーセントを計算するにはどうすればよいですか。

私を助けてください、私はこれを困難な方法で解決する方法を知っています。これは、プロバイダーパーセントを計算するときにクーポン値を計算するたびに計算されますが、さまざまなプロバイダーの1つのレポートにこのようなパーセントが8つあります。

したがって、基本的に質問は、計算されたクーポン値を使用して、同じレコードの別の計算でそれを使用する方法です。クーポンは製品に関して変更されているため、データベースから選択されたすべてのレコードで異なる場合があります。

役に立ちましたか?

解決

でこれを行うことはできません クロスを適用します?

他のヒント

それはシンプルで、計算された値を使用することができます、適用はCross適用で値です

このように、cpk.coupon、p.price、p.price-cpk.couponを最終的にselectします -

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
ライセンス: CC-BY-SA帰属
所属していません dba.stackexchange
scroll top