Je veux avoir une colonne calculée SQL selon des règles
-
06-07-2019 - |
Question
Je veux pouvoir stocker une valeur décimale dans une colonne et dans l'autre colonne pour stocker un entier représentant l'option (expliquera):
- doit être la base -%
- devrait être base -absolute
- doit être la base +%
- devrait être base + absolu
- 1 & amp; 2 est un rabais
- 3 & amp; 4 est un supplément
- 1 & amp; 3 réduit / augmente le montant en pourcentage (c.-à-d. Montant * montant / valeur).
- 2 & amp; 4 réduit / augmente le montant de manière absolue (c.-à-d. Montant +/- valeur).
Signification J'ai un tableau de 3 colonnes:
- Prix de base
- Prix supplémentaire décimal
- Option tinyint
et
- ComputedColumn (décimal?)
Supposons que nous avons une ligne indiquant que son prix de base est 100 et que son prix supplémentaire est 0.20
Selon l'option choisie, la colonne calculée doit générer la valeur suivante:
- 80
- 99.80
- 120
- 100.20
Suis-je clair? Est-ce que je peux y arriver?
La solution
Je garderais aussi la colonne calculée en argent.
En interne, cette conversion sera décimale en raison de type de données précédé
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)
)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow