MS SQL:計算値を使用して他の値を計算する
-
16-10-2019 - |
質問
データベースに存在するデータから計算される結果を生成することに問題があります。これは事実です
金額またはパーセントになる可能性のあるクーポンがあります、パーセントが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
所属していません dba.stackexchange