/ / एसक्यूएल के पतन के मामले विवरण - एसक्यूएल, एसक्यूएल-सर्वर, tsql

एसक्यूएल के Fallthrough केस स्टेटमेंट - एसक्यूएल, एसक्यूएल सर्वर, tsql

C # में हम लिख सकते हैं

switch(num)
{
case 0:
case 1: // do something; break;
case 2:
............
...........
case n: // do something break;
default: //do something; break;
}

मैं SQL SERVER में इसी तरह का सामान कैसे प्राप्त कर सकता हूं?

मैं लिखने के सरल तरीके के बारे में बात नहीं कर रहा हूंSQL सर्वर में मामला। मैं इस बारे में बात कर रहा हूं कि क्या मुझे ऑपरेशन के एक ही राजा को 2 या अधिक मामले में प्रदर्शन करने की आवश्यकता है, जैसा कि मैंने C # कोड स्निपेट में दिखाया था, SQL के मामले में इसी तरह का सामान कैसे करना है?

संपादित करें:

मुझे पहले ही यहाँ से कुछ अच्छे उत्तर मिल गए। मैं निम्नलिखित को कैसे बदल सकता हूं

SELECT CASE
WHEN [A]= num THEN "-" ELSE "" END [A],
CASE WHEN [B]= num THEN "-" ELSE "" END [B],
CASE WHEN [C]= num THEN "-" ELSE "" END [C],
CASE WHEN [D]= num THEN "-" ELSE "" END [D]

... कुछ इस तरह से:

SELECT CASE WHEN [A],
CASE WHEN [B],
CASE WHEN [C],
CASE WHEN [D] = num THEN "-" ELSE "" END [A] or [B] or [C] or [D]

वास्तव में मुझे PIVOT क्वेरी में इसकी आवश्यकता है। कल रात मैंने समस्या हल की। लेकिन लेखन के इस तरीके से मैं आश्वस्त नहीं हूं। क्योंकि हर बार, मैं वही काम कर रहा हूं। तो क्या इसे पेश करने का कोई बेहतर तरीका है?

उत्तर:

उत्तर № 1 के लिए 4

आप इसके लिए देख रहे होंगे।

SELECT
CASE
WHEN (num BETWEEN 0 AND 2) THEN "Between 0 and 2"
WHEN (num = 3) THEN "3"
ELSE "Something else"
END
...

MSDN से CASE के बारे में अधिक जानकारी।


जवाब के लिए 2 № 2

SQL एक का समर्थन करता है CASE बयान लेकिन यह एक ही बात के रूप में नहीं है switch उच्च स्तरीय भाषाओं जैसे C # और Java में कथन। एक स्विच स्टेटमेंट में, आपके पास गिरने की अवधारणा है जहां यदि ए break बयान का सामना नहीं किया गया है, प्रवाह अगले तक जारी है case। इसके विपरीत, एक एसक्यूएल CASE बयान एक उच्च स्तरीय भाषा की तरह व्यवहार करता है if(value==1){ ... }else if(value==2){ ... }else{ ... }.


जवाब के लिए 2 № 3

जैसे C # SWITCH स्टेटमेंट, SQL सर्वर का मामला अभिव्यक्ति कर देता है नहीं समर्थन पतन।

जोर पर ध्यान दें अभिव्यक्ति - यह प्रवाह के नियंत्रण के लिए उपयोग नहीं किया जाना है, जो है उसका उपयोग करें यहां सूचीबद्ध.


उत्तर के लिए 1 № 4

इस कदर:

SELECT
CASE num
WHEN 0 THEN ...
WHEN 1 THEN ...
ELSE ...
END as SomeCol
FROM ...