أريد الحصول على عمود SQL محسوب وفقًا للقواعد
-
06-07-2019 - |
سؤال
أريد أن أكون قادرًا على تخزين قيمة عشرية في عمود واحد، وفي العمود الآخر لتخزين int الذي يمثل الخيار (سوف يشرح):
- يجب أن تكون قاعدة -%
- ينبغي أن تكون قاعدة -مطلقة
- يجب أن تكون قاعدة +%
- يجب أن تكون قاعدة + مطلقة
- 1 و 2 خصم
- 3 و 4 هي تكلفة إضافية
- 1 و 3 يقلل/يزيد المبلغ بنسبة مئوية (أي.المبلغ * المبلغ/القيمة).
- 2 و 4 يقلل/يزيد المبلغ تمامًا (أي.المبلغ +/- القيمة).
بمعنى أن لدي جدول مكون من 3 أعمدة:
- المال الأساسي
- السعر العشري الإضافي
- الخيار صغير
و
- عمود محسوب (عشري؟)
لنفترض أن لدينا صفًا يكون فيه BasePrice هو 100 والسعر الإضافي هو 0.20
وفقًا للخيار، يجب أن يُنشئ العمود المحسوب القيمة التالية:
- 80
- 99.80
- 120
- 100.20
هل أنا واضح؟هل هناك أي طريقة يمكنني من خلالها تحقيق ذلك؟
المحلول
سأحتفظ بالعمود المحسوب كمال أيضًا.
داخليًا، سيتم تحويل هذا إلى الرقم العشري بسبب أسبقية نوع البيانات
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)
)
لا تنتمي إلى StackOverflow