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à):

  1. dovrebbe essere base -%
  2. dovrebbe essere base -absolute
  3. dovrebbe essere base +%
  4. dovrebbe essere base + assoluto
  5. 1 & amp; 2 è uno sconto
  6. 3 & amp; 4 è un supplemento
  7. 1 & amp; 3 riduce / aumenta l'importo in percentuale (ovvero importo * importo / valore).
  8. 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?

È stato utile?

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
scroll top