2017-03-23 6 views
5

मेरे पास एक दिनांक कॉलम है जिसमें NULL है। मैं दिनांक कॉलम एएससी द्वारा ऑर्डर करना चाहता हूं, लेकिन मुझे नीचे NULL एस की आवश्यकता है। इसे पर कैसे करें TSQL?TSQL ORDER शून्य या पहले (नीचे या ऊपर) nulls के साथ

+0

की संभावित डुप्लिकेट [तारीख और nulls द्वारा एसक्यूएल सर्वर आदेश पिछले] (http: // stackoverflow उस बात के लिए तार), तो आपको चाहिए ताकि पहले प्रकार से है अशक्त/बातिल और उसके बाद ही अपने कॉलम के आधार पर नहीं है .com/प्रश्न/5886 857/sql-server-order-by-date-and-nulls-last) – HABO

उत्तर

2
Select * 
From YourTable 
Order By case when DateCol is null then 1 else 0 end 
     ,DateCol 

या यहां तक ​​कि Order By IsNull(DateCol,'2525-12-31')

+1

"वर्ष 2525 में यदि आदमी अभी भी जिंदा है"? –

+0

@Zohar अंत में! किसी को यह मिला है कि –

+0

मुझे इन पुराने गाने से प्यार है ... –

12

मानक SQL में आप निर्दिष्ट कर सकते हैं जहां nulls डाल करने के लिए:

order by col asc nulls first 
order by col asc nulls last 
order by col desc nulls first 
order by col desc nulls last 

लेकिन T-SQL मानक यहाँ का पालन नहीं करता। NULLs के आदेश आप प्रकार आरोही या T-SQL में उतरते हैं, इस पर निर्भर करता है:

order by col asc -- implies nulls first 
order by col desc -- implies nulls last 

पूर्णांकों के साथ आप कर सकते थे बस प्रकार नकारात्मक द्वारा:

order by -col asc -- sorts by +col desc, implies nulls first 
order by -col desc -- sorts by +col asc, implies nulls last 

लेकिन इस तिथियों के साथ संभव नहीं है (या

order by case when col is null then 1 else 2 end, col asc|desc -- i.e. nulls first 
order by case when col is null then 2 else 1 end, col asc|desc -- i.e. nulls last 
+0

+1 मानक बनाम टीएसक्यूएल अंतर को बुलावा देने के लिए। 'कर्नल एसी द्वारा ऑर्डर' पहले नल देता है और 'कॉल desc द्वारा ऑर्डर' शून्य को देता है क्योंकि SQL सर्वर शून्य मानों को सबसे कम संभव मान के रूप में मानता है, देखें [चयन - क्लॉज द्वारा ऑर्डर] (https://docs.microsoft.com/ en-us/एसक्यूएल/T-SQL/प्रश्नों के लिए/चयन-आदेश-दर-खंड-Transact-SQL) – HappyTown

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