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

मामला जब खंड द्वारा आदेश के लिए बयान

CASE एक अभिव्यक्ति है - यह एक एकल . लौटाता है अदिश मान (प्रति पंक्ति)। यह किसी अन्य चीज़ के पार्स ट्री के जटिल भाग को वापस नहीं कर सकता, जैसे ORDER BY SELECT . का खंड बयान।

ऐसा लगता है कि आपको बस इसकी आवश्यकता है:

ORDER BY 
CASE WHEN TblList.PinRequestCount <> 0 THEN TblList.PinRequestCount END desc,
CASE WHEN TblList.HighCallAlertCount <> 0 THEN TblList.HighCallAlertCount END desc, 
Case WHEN TblList.HighAlertCount <> 0 THEN TblList.HighAlertCount END DESC,
CASE WHEN TblList.MediumCallAlertCount <> 0 THEN TblList.MediumCallAlertCount END DESC,
Case WHEN TblList.MediumAlertCount <> 0 THEN TblList.MediumAlertCount END DESC,
TblList.LastName ASC, TblList.FirstName ASC, TblList.MiddleName ASC

या शायद:

ORDER BY 
CASE
   WHEN TblList.PinRequestCount <> 0 THEN TblList.PinRequestCount
   WHEN TblList.HighCallAlertCount <> 0 THEN TblList.HighCallAlertCount
   WHEN TblList.HighAlertCount <> 0 THEN TblList.HighAlertCount
   WHEN TblList.MediumCallAlertCount <> 0 THEN TblList.MediumCallAlertCount
   WHEN TblList.MediumAlertCount <> 0 THEN TblList.MediumAlertCount
END desc,
TblList.LastName ASC, TblList.FirstName ASC, TblList.MiddleName ASC

यह बताना थोड़ा मुश्किल है कि आप उपरोक्त में से कौन सा (या कुछ और) ढूंढ रहे हैं क्योंकि आपने a) समझाया नहीं है आप किस वास्तविक क्रम को प्राप्त करने का प्रयास कर रहे हैं, और b) किसी भी नमूना डेटा की आपूर्ति नहीं की है और अपेक्षित परिणाम, जिनसे हम कटौती . करने का प्रयास कर सकते हैं वास्तविक सॉर्ट क्रम जिसे आप प्राप्त करने का प्रयास कर रहे हैं।

यह वह उत्तर हो सकता है जिसकी हम तलाश कर रहे हैं:

ORDER BY 
CASE
   WHEN TblList.PinRequestCount <> 0 THEN 5
   WHEN TblList.HighCallAlertCount <> 0 THEN 4
   WHEN TblList.HighAlertCount <> 0 THEN 3
   WHEN TblList.MediumCallAlertCount <> 0 THEN 2
   WHEN TblList.MediumAlertCount <> 0 THEN 1
END desc,
CASE
   WHEN TblList.PinRequestCount <> 0 THEN TblList.PinRequestCount
   WHEN TblList.HighCallAlertCount <> 0 THEN TblList.HighCallAlertCount
   WHEN TblList.HighAlertCount <> 0 THEN TblList.HighAlertCount
   WHEN TblList.MediumCallAlertCount <> 0 THEN TblList.MediumCallAlertCount
   WHEN TblList.MediumAlertCount <> 0 THEN TblList.MediumAlertCount
END desc,
TblList.LastName ASC, TblList.FirstName ASC, TblList.MiddleName ASC


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सेकंड के बिना डेटटाइम मान डेटा से निकालने का एक तरीका

  2. मुझे एक SQL सर्वर प्रतिकृति प्रोजेक्ट पर गलत प्रारूप त्रुटि वाले प्रोग्राम को लोड करने का प्रयास किया गया था

  3. तालिका मूल्यवान पैरामीटर के साथ पायथन कॉल एसक्यूएल-सर्वर संग्रहीत प्रक्रिया

  4. SQL सर्वर में यूनिक्स टाइमस्टैम्प को दिनांक/समय मान में कैसे परिवर्तित करें

  5. एकाधिक अनुक्रमणिका बनाम बहु-स्तंभ अनुक्रमणिका