MS SQL: valore Usa Calcolato per calcolare altri valori
-
16-10-2019 - |
Domanda
Sto avendo problemi con la generazione di risultati che vengono calcolati a partire dai dati che esiste nel database. Questo è il caso
Ho tagliandi che possono essere quantità o percentuale, se cento è 0 importo allora viene utilizzato
CASE
WHEN c.CouponPercent > 0 THEN p.Price - (c.CouponPercent/100)
ELSE c.CouponValue
END as Coupon
ora devo calcolare per cento per un fornitore di contenuti che è
(p.Price-Coupon)*(ProviderPercent/100)
Come posso utilizzare il valore cedola calcolare dall'alto per calcolare Provider per cento, se lo uso come nel codice qui sopra errore viene segnalato "non valido nome di colonna 'Coupon'".
Please help me, so come risolvere questo su strada difficile, che è il valore Cedola calcolare ogni volta il calcolo ProviderPercent ma ho 8 percentuali come questo in un rapporto per i fornitori differenti.
Quindi, in pratica domanda è come utilizzare il valore Cedola calcolato per utilizzarlo in un altro calcoli per stesso record. Coupon è cambiato per quanto riguarda prodotti, così posso essere diverso per ogni record selezionato dal database.
Soluzione
Non si può fare questo con un CROSS APPLY ?
Altri suggerimenti
E 'semplice, valore calcolato può essere usato applicando è rapporto con croce applicare
come questo selezionare cpk.coupon, p.Price, p.Price-cpk.coupon come 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