题
我的生成结果有问题,这些结果是根据数据库中存在的数据计算得出的。就是这样
我的优惠券可以是金额或百分比,如果百分比为0,则使用金额
CASE
WHEN c.CouponPercent > 0 THEN p.Price - (c.CouponPercent/100)
ELSE c.CouponValue
END as Coupon
现在,我必须计算一个内容提供商的百分比
(p.Price-Coupon)*(ProviderPercent/100)
如果我使用以上代码中的代码错误,则如何使用上面的计算息票值来计算提供商的百分比。
请帮助我,我知道如何以困难的方式解决此问题,这是在计算ProviderPercent时每次计算优惠券价值,但是我在一个报告中为不同的提供商提供了8个类似的percents。
因此,基本上的问题是如何使用计算的优惠券值将其用于同一记录的另一个计算中。优惠券对产品进行了更改,因此我可以在数据库中选择的每个记录有所不同。
解决方案
你不能用一个 交叉应用?
其他提示
它是简单的,计算的值可以通过应用IS IS Value与Cross Apply一起使用
像这样选择CPK.COUPON,P.PRICE,P.PRICE-CPK.COUPON作为最终优势 - 等等
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