2011-06-03 11 views
10

चयन हम एसक्यूएल में लिखना एक स्थिर मान देने के लिएकई स्थिर मान

select "Jan" as StartMonth 

इसी तरह कर सकते हैं, एसक्यूएल एक ही स्तंभ में एक से अधिक मान वापस जाने के लिए लिखने के लिए अनुमति चाहिए

select {"Jan", "Feb", "Mar"} as Qtr1, {"Apr", "May", "Jun"} as Qtr2 

जब हमें शामिल होने के लिए तालिका के रूप में डेटा की आवश्यकता है और डेटा एसपी स्तर पर अज्ञात है, यानी, यह पैरामीटर से आ रहा है, यह अस्थायी कार्यों को अस्थायी रूप से प्रकट करता है और अस्थायी तालिका में विभाजित मान डालता है। अगर एमएस एसक्यूएल सर्वर में ऐसी सुविधा मौजूद है तो मुझे सही करें। या पिवट और अस्थायी तालिका के अलावा इसे रखने का बेहतर तरीका।

+0

आप इसका उपयोग कैसे करने की योजना बना रहे हैं? क्या आप स्थिर मूल्यों का उपयोग करके प्राप्त करने का प्रयास कर रहे हैं इसका एक उदाहरण प्रदान कर सकते हैं? – shahkalpesh

+0

क्या आप परिणामों को एक ही कॉलम (यानी: एकाधिक पंक्तियों) को एक ही मान (यानी स्केलर) में अल्पविराम से अलग स्ट्रिंग की तरह जोड़ना चाहते हैं? साथ ही, यदि आप ऊपर दिए गए उदाहरण के अनुसार इन्हें कड़ी मेहनत कर रहे हैं, तो क्या गलत है: Qtr1, 'अप्रैल, मई, जून' के रूप में 'जनवरी, फरवरी, मार्च' का चयन Qtr2 के रूप में करें? –

+1

@ शाह; यह एक सामान्य सवाल है, मुझे पता है कि विकल्प हैं लेकिन अगर हम इस तरह से लिख सकते हैं तो यह अच्छा होगा। सामान्य परिदृश्य हमारे पास बहुत सारे एसपी हैं जो रिपोर्ट के लिए अल्पविराम से अलग स्ट्रिंग के रूप में वर्षों लेते हैं और हमने उन्हें विभाजित और टेम्प टेम्प में स्टोर किया है या तालिका चर का उपयोग किया है। – hungryMind

उत्तर

26

क्या यह आपको वह चाहिए जो आपको चाहिए?

SELECT 'Jan' AS Qtr1, 'Apr' AS Qtr2 
UNION ALL SELECT 'Feb' AS Qtr1, 'May' AS Qtr2 
UNION ALL SELECT 'Mar' AS Qtr1, 'Jun' AS Qtr2 
+4

यह अच्छा लग रहा है। आप इसे थोड़ा छोटा भी बना सकते हैं: 'जनवरी' एएस क्यूआर 1, 'अप्रैल' के रूप में चुनें Qtr2 यूनियन चयन 'फरवरी', 'मई' यूनियन चयन 'मार्च', 'जून' – Paul

+0

मैं कभी-कभी इसे सीटीई में उपयोग करता हूं (PARMS AS (SELECT ...) के साथ पैरामीटर को सॉर्ट करने के लिए विचारों और स्क्रिप्ट्स में जब मैं वैरिएबल आदि घोषित नहीं करता (या नहीं कर सकता) या जब मुझे काम करने के लिए स्थिर डेटा का एक विशेष सेट चाहिए। यह अच्छा है क्योंकि मैं इसे स्क्रिप्ट के शीर्ष के पास रख सकता हूं। मेरी इच्छा है कि इसे लिखने के लिए एक छोटा रास्ता था जैसे भूखे दिमाग का सुझाव, लेकिन यह अभी भी आसान है! – kwill

0

यह तब तक संभव नहीं है जब तक कि आप एक टेम्पलेट टेबल का उपयोग न करें जैसे कि आपने पहले से ही सुझाव दिया है।

0

SQL सर्वर के रूप में 2008 आप तालिका मूल्य पैरामीटर का उपयोग कर सकते हैं - जिससे आप तो करने के लिए डेटा की एक तालिका में पारित का उपयोग/के रूप में आप एक सीएसवी स्ट्रिंग में पारित करने के लिए बजाय होने के sproc अंदर इच्छा पर शामिल हो सकते हैं कि आपको विभाजित करने की आवश्यकता होगी। इस MSDN article

चेक आउट:

+0

हां लेकिन 2008 में, मेरा ग्राहक इसे नहीं खरीद पाएगा। इसकी आवश्यकता नहीं है लेकिन इसमें अच्छा लगा है। – hungryMind

+0

@ हंगरीमाइंड - ठीक है, यह उल्लेखनीय है कि आपने यह नहीं बताया कि आप किस संस्करण का उपयोग कर रहे थे – AdaTheDev

1

मैं इस सवाल का पता टैग किया है, लेकिन यह शीर्ष गूगल परिणाम जब मैं Postgres जवाब के लिए देख रहा था के बीच था, इसलिए here it is for Postgres:

यह:

VALUES ('Jan', 'Apr'), ('Feb', 'May'), ('Mar', 'Jun'); 

इस के बराबर है:

SELECT 'Jan' AS column1, 'Apr' AS column2 
UNION ALL SELECT 'Feb', 'May' 
UNION ALL SELECT 'Mar', 'Jun' 
संबंधित मुद्दे