Order by x then order by y column in SQL Server

后端 未结 4 1130
忘掉有多难
忘掉有多难 2021-01-19 05:11

Consider a table like

   debit    credit  code
-----------------------------
    0       10      5
    5       0       3
    0       11      2
    0       15         


        
相关标签:
4条回答
  • 2021-01-19 06:04

    You can use this.

    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
    

    Result:

    debit       credit      code
    ----------- ----------- -----------
    5           0           1
    6           0           2
    5           0           3
    7           0           6
    0           15          1
    0           11          2
    0           10          5
    
    0 讨论(0)
  • 2021-01-19 06:16

    Use this select to help you:

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

    or

    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)
  • ;WITH Props AS
    (
    SELECT *,
        ROW_NUMBER() OVER (ORDER BY c,cc) AS RowNumber
    FROM Location
    
    )
    select * from Props order by d desc,RowNumber
    

    Try the above code

    WOrking fiddle here

    0 讨论(0)
  • 2021-01-19 06:18

    Please use below one in order by clause you will get the output that you are looking for

      order by cast(cast(code as varchar(50)) 
                                  + cast(debit as varchar(2)+ cast(credit as varchar(2) as int)
    
    0 讨论(0)
提交回复
热议问题