MS SQL: use el valor calculado para calcular otros valores
-
16-10-2019 - |
Pregunta
Tengo problemas para generar resultados que se calculan a partir de datos que existe en la base de datos. Este es el caso
Tengo cupones que pueden ser la cantidad o el porcentaje, si el porcentaje es 0, entonces se usa la cantidad
CASE
WHEN c.CouponPercent > 0 THEN p.Price - (c.CouponPercent/100)
ELSE c.CouponValue
END as Coupon
Ahora tengo que calcular el porcentaje de un proveedor de contenido que es
(p.Price-Coupon)*(ProviderPercent/100)
¿Cómo puedo usar el valor del cupón de calcular desde arriba para calcular el porcentaje de proveedor, si lo uso como en el código anterior se informa que el error se informa "cupón" no válido de la columna "?
Por favor, ayúdame, sé cómo resolver esto de manera difícil, que es calcular el valor del cupón cada vez al calcular el porcentaje de proveedor, pero tengo 8 porcentajes como este en un informe para diferentes proveedores.
Básicamente, la pregunta es cómo usar el valor de cupón calculado para usarlo en otros cálculos para el mismo registro. El cupón se cambia con respecto al producto, por lo que puedo ser diferente para cada registro seleccionado de la base de datos.
Solución
¿No puedes hacer esto con un Aplicar cruzado?
Otros consejos
Es simple, el valor calculado se puede usar mediante la aplicación es valor con la aplicación cruzada
Al igual que este selecto cpk.coupon, P.Price, P.Price-CPK.Coupon como 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