Voglio avere una colonna calcolata SQL secondo le regole
-
06-07-2019 - |
Domanda
Voglio essere in grado di memorizzare un valore decimale in una colonna e nell'altra colonna per memorizzare un int che rappresenta l'opzione (spiegherà):
- dovrebbe essere base -%
- dovrebbe essere base -absolute
- dovrebbe essere base +%
- dovrebbe essere base + assoluto
- 1 & amp; 2 è uno sconto
- 3 & amp; 4 è un supplemento
- 1 & amp; 3 riduce / aumenta l'importo in percentuale (ovvero importo * importo / valore).
- 2 & amp; 4 riduce / aumenta la quantità in modo assoluto (vale a dire quantità +/- valore).
Significato ho una tabella di 3 colonne:
- Soldi BasePrice
- Prezzo aggiuntivo decimale
- Opzione tinyint
e
- ComputedColumn (decimale?)
supponiamo di avere una riga secondo cui BasePrice è 100 e AdditionalPrice è 0.20
Secondo l'opzione la colonna calcolata dovrebbe generare il seguente valore:
- 80
- 99.80
- 120
- 100.20
Sono chiaro? C'è un modo per raggiungere questo obiettivo?
Soluzione
Terrei anche la colonna calcolata come denaro.
Internamente, questo sarà decimale a causa di Precedenza tipo di dati
CREATE TABLE (
...,
ComputedColumn AS CAST (
CASE Option
WHEN 1 THEN BasePrice * (1 - AdditionalPrice)
WHEN 2 THEN BasePrice - AdditionalPrice
WHEN 3 THEN BasePrice * (1 + AdditionalPrice)
WHEN 4 THEN BasePrice + AdditionalPrice
END AS money)
)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow