2017-12-24 54 views
6

तरहआदेश

debit credit code 
----------------------------- 
    0  10  5 
    5  0  3 
    0  11  2 
    0  15  1 
    7  0  6 
    6  0  2 
    5  0  1 

मैं एक परिणाम के इस तरह सेट है कि पहले आओ डेबिट और उसके बाद कोड स्तंभ द्वारा आदेश दिया उत्पन्न करने के लिए जरूरत है एक मेज पर विचार करें:

debit credit code 
---------------------------- 
5  0  1 
6  0  2 
5  0  3 
7  0  6 
0  15  1 
0  11  2 
0  10  5 
+1

की डुप्लीकेट [एसक्यूएल एकाधिक स्तंभ आदेश] (https://stackoverflow.com/questions/2051162/sql-multiple-column-ordering) – Brien

+0

धन्यवाद, लेकिन यह है मेरी समस्या समाधान नहीं, क्योंकि मुझे डेबिट (शून्य से अधिक) आने की आवश्यकता है, फिर इसे डेबिट और कोड –

+0

ठीक से ऑर्डर करें, कृपया अपने प्रश्न को अपडेट करें कि भविष्य के पाठकों के लाभ के लिए या अधिक स्पष्ट हो। धन्यवाद! – Brien

उत्तर

6

आप इस का उपयोग कर सकते हैं देख रहे हैं मिल जाएगा।

DECLARE @MyTable TABLE(debit INT, credit INT, code INT) 

INSERT INTO @MyTable VALUES 
(0, 10, 5), 
(5, 0 , 3), 
(0, 11, 2), 
(0, 15, 1), 
(7, 0 , 6), 
(6, 0 , 2), 
(5, 0 , 1) 

SELECT * FROM 
    @MyTable 
ORDER BY 
    (CASE WHEN debit > 0 THEN 0 ELSE 1 END) , 
    code , 
    debit 

परिणाम:

debit  credit  code 
----------- ----------- ----------- 
5   0   1 
6   0   2 
5   0   3 
7   0   6 
0   15   1 
0   11   2 
0   10   5 
+1

मुझे लगता है कि क्वेरी से परिणाम परिणाम नहीं देगा ओपी क्या पूछ रहा है, पहले कॉलम ऑर्डर में आपको 5,6,5 कैसे मिलता है क्योंकि यह 3 कॉलम मान – Rams

+1

पर निर्भर करता है हाय क्या मेरा समाधान सहायक है? –

+0

@ रैम्स अलग-अलग डेबिट> 0 पंक्तियों के लिए पहले ऑर्डर। –

0

उपयोग इस चयन मदद करने के लिए:

SELECT debit, code, credit 
FROM table a 
WHERE debit > 0 
or debit = 0 
order by debit code, credit desc 

या

SELECT debit, code, credit 
FROM table a 
WHERE debit > 0 
or debit = 0 
group by debit, code, credit 
order by debit code, credit desc 
+0

आपकी मदद के लिए धन्यवाद, लेकिन मुझे डेबिट (संख्या के साथ) पहले आना है और फिर कोड कॉलम द्वारा आदेश दिया गया है, इस क्वेरी में क्रेडिट पहले –

+0

आपके लिए संपादित किया गया है :) –

+0

धन्यवाद, यह अपवाद फेंक दिया गया कॉलम कोड 'अमान्य है चयन सूची में क्योंकि यह या तो कुल कार्य या ग्रुप बाय क्लॉज –

2
;WITH Props AS 
(
SELECT *, 
    ROW_NUMBER() OVER (ORDER BY c,cc) AS RowNumber 
FROM Location 

) 
select * from Props order by d desc,RowNumber 

ऊपर कोड

WOrking fiddle here

+0

में मदद करता है, मैंने इसे मूल डेटा के साथ करने की कोशिश की और यह अपेक्षित परिणाम नहीं दे रहा है। –

+0

ठीक है, मैं इसे ठीक करने का प्रयास करता हूं जब मुझे कुछ समय मिलेगा –

3

प्रयास करें order by clause में एक नीचे का उपयोग करें आप उत्पादन है कि आप के लिए

order by cast(cast(code as varchar(50)) 
           + cast(debit as varchar(2)+ cast(credit as varchar(2) as int) 
+0

तो 'कोड'' 5', 'डेबिट' '11',' क्रेडिट' '2'' 5', '1' के बराबर होगा,' 12'। यह सही नहीं लगता है। – HABO