2013-05-01 12 views
5

मैं निम्न के समान एक मेज है युक्त के आधार पर बनाए श्रेणी स्तंभ:SQL क्वेरी: तालिका में एक varchar स्तंभ विशिष्ट मान

Date  Description  Value1 Value2 
01/01/2012 shiny colour 2  0  
01/01/2012 yellow colour 2  2  
03/01/2012 matt colour  2  2  
03/01/2012 matt   4  1 
03/01/2012 shiny   2  2 

मैं एक का चयन करें SQL क्वेरी लिखना चाहते हैं (T-SQL) है कि होगा उपरोक्त सभी स्तंभों को आउटपुट करें, लेकिन चयन कथन के आउटपुट के रूप में एक अतिरिक्त कॉलम प्रदर्शित करें जिसका मूल्य विवरण में "रंग" शब्द की उपस्थिति पर निर्भर करता है (यदि "रंग" मौजूद है तो यह एक मान होगा, अगर नहीं एक अलग मूल्य दिखाएगा)।

(मैं इसके शीर्ष पर एक और अतिरिक्त कॉलम भी प्रदर्शित करना चाहता हूं जिसका मूल्य विवरण कॉलम में "मैट" या "चमकदार" शब्दों की उपस्थिति पर निर्भर करता है। लेकिन मुझे लगता है कि ऐसा करने की विधि समान होगी)।

मेरा मानना ​​है कि मुझे COALESCE फ़ंक्शन का उपयोग करके ऐसा करने में सक्षम होना चाहिए, लेकिन मैं इससे परिचित नहीं हूं और कुछ भी काम करने के लिए संघर्ष कर रहा हूं?

विस्तार

अरे, अपने जवाब के लिए धन्यवाद। वे वास्तव में सहायक हैं। मेरे पास प्रश्न के लिए एक और विस्तार है। मेरा दूसरा जेनरेट किया गया कॉलम पहले जेनरेट किए गए कॉलम में जानकारी पर निर्भर करता है। तो कुछ ऐसा:

SELECT *, 
CASE 
    WHEN Description LIKE '%colour%' THEN 'SomeValue' 
    ELSE 'Unclassified' 
END AS Category1, 
CASE 
    WHEN AnotherColumn LIKE 'Something' THEN 'SomeValue' 
    WHEN Category1='Unclassified' THEN 'Unclassified' 
    ELSE 'Generic' 
END AS Category2 
FROM table_name 

श्रेणी 1 के आउटपुट पर भरोसा करने के लिए मैं श्रेणी 2 का आउटपुट कैसे प्राप्त करूं? मैं उपर्युक्त की तरह कुछ कोशिश कर रहा हूं लेकिन यह काम नहीं कर रहा है।

मेरे विस्तार प्रश्न का यहां उत्तर था:T-SQL CASE statement relies on another CASE statement in same SELECT query

उत्तर

2
SELECT *, 
     CASE WHEN Description LIKE '%colour%' THEN 
      1 
     ELSE 
      0 
     END AS HasColour, 
     CASE WHEN Description LIKE '%matt%' THEN 
      1 
     ELSE 
      0 
     END AS HasMatt, 
     CASE WHEN Description LIKE '%shiny%' THEN 
      1 
     ELSE 
      0 
     END AS HasShiny 
FROM table_name 

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

0

जब तक मैं गलत है कि तुम क्या कह रहे हैं, तो आप एक मामले बयान इस्तेमाल कर सकते हैं:

SELECT Date, 
Description, 
Value1, 
Value2, 
Case when Description like '%colour%' then OTHERCOL else OTHERCOL2 end as Colourful, 
Case when Description like '%matt%' then OTHERCOL else OTHERCOL2 end as Matt, 
Case when Description like '%shiny%' then OTHERCOL else OTHERCOL2 end as Shiny, 
FROM yourTable 
+0

बिल्कुल सही धन्यवाद! – Katie

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