Frage

Ich mag einen Dezimalwert in einer Spalte speichern zu können, und in der anderen Spalte ein int zu speichern, die die Option darstellt (wird erklärt):

  1. soll Basis sein -%
  2. sollte Basis -absoluten sein
  3. sollte base +%
  4. sein
  5. sollte base + absolute
  6. 1 & 2 ist ein Rabatt
  7. 3 und 4 ist ein upcharge
  8. 1 und 3 verringert / erhöht den Betrag, um Prozentsatz (d.h. Menge * Menge / value).
  9. 2 & 4 verringert / erhöht die Menge absolut (das heißt Menge +/- Wert).

Bedeutung Ich habe eine Tabelle von 3 Spalten:

  • Grundpreis Geld
  • AdditionalPrice dezimal
  • Option Tinyint

und

  • ComputedColumn (dezimal?)

Lassen Sie uns sagen, dass wir eine Reihe haben, dass es Grundpreis ist 100 und die AdditionalPrice 0,20

Nach der Wahl der berechnete Spalte sollte den folgenden Wert generieren:

  • 80
  • 99,80
  • 120
  • 100,20

Bin ich klar? Gibt es eine Möglichkeit, dies erreichen kann?

War es hilfreich?

Lösung

Ich würde die berechnete Spalte als Geld behalten zu.

Intern wird diese in Dezimalzahlen werfen wegen Datentyp Präzedenz

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)
)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top