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