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.

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top