MS SQL: Verwenden Sie den berechneten Wert, um andere Werte zu berechnen
-
16-10-2019 - |
Frage
Ich habe ein Problem damit, Ergebnisse zu generieren, die aus Daten in der Datenbank berechnet werden. Das ist der Fall
Ich habe Gutscheine, die Betrag oder Prozent sein können, wenn der Prozentsatz 0 ist, wird der Betrag verwendet
CASE
WHEN c.CouponPercent > 0 THEN p.Price - (c.CouponPercent/100)
ELSE c.CouponValue
END as Coupon
Jetzt muss ich Prozent für einen Inhaltsanbieter berechnen, der ist
(p.Price-Coupon)*(ProviderPercent/100)
Wie kann ich den Coupon -Wert von oben berechnen, um den Prozentsatz von Anbietern zu berechnen, wenn ich ihn wie im obigen Fehler verwende, wird angegeben "Ungültiger Spaltenname 'Coupon'".
Bitte helfen Sie mir, ich weiß, wie ich dies auf schwierige Weise beheben kann, nämlich bei der Berechnung der Anbieter, aber ich habe 8 Gewinne wie diesen in einem Bericht für verschiedene Anbieter.
Im Grunde genommen ist die Frage, wie der berechnete Gutscheinwert verwendet wird, um ihn in anderen Berechnungen für denselben Datensatz zu verwenden. Der Gutschein wird in Bezug auf das Produkt geändert, sodass ich für jeden aus der Datenbank ausgewählten Datensatz unterschiedlich sein kann.
Lösung
Kannst du das nicht mit einem tun? Kreuzbewerb?
Andere Tipps
Es ist einfach, berechnungswert kann durch Anwenden verwendet werden, ist der Wert mit Kreuzanmeldung
Wie diese select cpk.coupon, P.Price, P.Price-cpk.coupon als FinalPrice-usw.
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