2010-02-18 25 views
5

छद्म-कोड में, यह bascially है के आधार पर अलग रकम कम्प्यूटिंग मैं करना चाहता हूँ क्या होगा: (।, आदि स्तंभ नाम उदाहरण के लिए बस कर रहे हैं)एक स्तंभ का मान

select 
    if a1 >= 0 and a1 <= 2 
     a2 + a7 + a8 as sum 
    else 
     a2 + a8 as sum 
from table_name 
; 

अंग्रेजी में: मुझे कुछ हजार रिकॉर्डों में से प्रत्येक के लिए अलग-अलग कॉलम जोड़ना होगा। यदि संभव हो, तो मैं एसक्यूएल में योग करना चाहता हूं। शर्तों के बीच केवल एक या दो मतभेद हैं, या तो एक कॉलम गायब/जोड़ा गया है, एक प्रतिस्थापन, या दोनों। यह एप्लिकेशन के व्यावसायिक तर्क पर आधारित है, न कि मेरी पसंद का डिज़ाइन निर्णय।

मैं sqlite3 (3.6.10) का उपयोग कर रहा हूं, जो कुछ हद तक विकल्पों को सीमित करता है।

उत्तर

8

यहाँ आप एसक्यूएल में है कि बूलियन भाव या तो 0 या 1 के रूप में मूल्यांकित एक चाल का उपयोग कर सकते हैं:

SELECT 
    CASE WHEN a1 BETWEEN 0 AND 2 
     THEN a2 + a7 + a8 
     ELSE a2 + a8 
    END AS SUM 
FROM table_name 
:

SELECT a2 + a8 + a7 * (a1 BETWEEN 0 AND 2) AS SUM 
FROM table_name 

एक अधिक सामान्य (और अधिक परंपरागत) जिस तरह से एक मामला अभिव्यक्ति का उपयोग करने के लिए है

तुम भी आम शब्दों को दोहराए बिना एक मामला अभिव्यक्ति शामिल करने के लिए कुछ इस तरह कर सकते हैं:

SELECT 
    a2 + a8 + (CASE WHEN a1 BETWEEN 0 AND 2 THEN a7 ELSE 0 END) AS SUM 
FROM table_name 
+0

यह वही है जो मुझे चाहिए, धन्यवाद। एक जादू की तरह काम करता है। –

संबंधित मुद्दे