Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एसक्यूएल में केस एक्सप्रेशन को एसएसआईएस में व्युत्पन्न कॉलम में कनवर्ट करें

निम्नलिखित कहानी का नैतिक यह है कि सिर्फ इसलिए कि आप कर सकते हैं SSIS में कुछ करें, यह हमेशा एक अच्छा विचार नहीं होता है।

मामले में, यह प्रश्न। एसएसआईएस में व्युत्पन्न कॉलम या स्क्रिप्ट कार्य का उपयोग करने से अंतिम मूल्य उत्पन्न करने के लिए मौजूदा एसक्यूएल तर्क का उपयोग करना कहीं अधिक कुशल होगा (पाइपलाइन मेमोरी, सीपीयू, आदि के अपशिष्ट का उल्लेख नहीं करना)

स्रोत क्वेरी

मैंने निम्नलिखित का उपयोग स्रोत क्वेरी के रूप में किया है।

SELECT '50%' AS FixedARMRateReductionLimit, .1 AS PARAM_VAL_TXT
UNION ALL  SELECT 'Weekly PMMS Rate' AS FixedARMRateReductionLimit, .3 AS PARAM_VAL_TXT
UNION ALL  SELECT 'Frack',  .5

प्रतिशत स्थान खोजें

निर्धारित करें कि कॉलम में प्रतिशत प्रतीक मौजूद है या नहीं। यह PercentPosition . नामक कॉलम बनाता है

FINDSTRING(FixedARMRateReductionLimit, "%",1)

दर टेक्स्ट की जांच करें

यह एक साधारण तुलना करने के लिए पर्याप्त होना चाहिए जैसा कि पहली अभिव्यक्ति से पता चलता है लेकिन मुझे इसके साथ समस्या हो रही थी। मुझे लगता है कि यह एक स्ट्रिंग रूपांतरण/तुलना है। मुद्दा (पहले नोट देखें)। बूलियन मान प्राप्त करने के बजाय, मैंने क्रमिक स्थिति उत्पन्न करने के लिए फाइंडस्ट्रिंग का उपयोग किया।

FixedARMRateReductionLimit == "'Weekly PMMS Rate"
FINDSTRING(FixedARMRateReductionLimit,"Weekly PMMS Rate",1)

आउटपुट प्राप्त करें

टर्नरी ऑपरेटर के दोहरे उपयोग का आनंद लें ।

(RateTextPosition > 0) ? (PARAM_VAL_TXT) : (PercentPosition == 0) ? .2 : ((DT_NUMERIC, 18,2) SUBSTRING(FixedARMRateReductionLimit,1,PercentPosition - 1))/100

आप इसमें से कुछ को एक स्क्रिप्ट कार्य में सरल बना सकते थे लेकिन मैं सिर्फ स्रोत में तर्क करूँगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में sys.sql_modules, sys.system_sql_modules और sys.all_sql_modules के बीच अंतर

  2. SQL क्वेरी - यदि 3 से अधिक डुप्लिकेट हैं तो डुप्लिकेट हटाएं?

  3. एकल या एकाधिक डेटाबेस

  4. CSV फ़ाइल में SQL कथन आउटपुट कैसे लिखें?

  5. पंक्ति 1, कॉलम 4 (वर्ष) के लिए बल्क लोड डेटा रूपांतरण त्रुटि (निर्दिष्ट कोडपेज के लिए बेमेल या अमान्य वर्ण टाइप करें)