zoukankan      html  css  js  c++  java
  • SQL排序方法,EXEC法和CASE WHEN法

    在日常的報表中常用到排序,有些是多字段的升,降序,一般有兩種方法,如下所示:

    CREATE TABLE #TMP
    (
        row    
    int
        id    
    nvarchar(10), 
        des    
    nvarchar(20)
    )
    GO

    INSERT INTO #TMP(row, id, des)
            
    SELECT 1'1''30'
    UNION    SELECT 2'2''10'
    UNION    SELECT 3'1''10'
    UNION    SELECT 4'3''15'

    --'1'=>row desc,'2'=>id asc,row desc '3'=>id asc, des desc
    DECLARE @OrderType    nvarchar(1)    
    SET @OrderType='3'

    --EXEC作法
    DECLARE @sqlstr nvarchar(200)
    SET @sqlstr='SELECT * FROM #TMP'
    IF @OrderType='1'
        
    SET @sqlstr=@sqlstr+' ORDER BY row DESC'
    ELSE IF @OrderType='2'
        
    SET @sqlstr=@sqlstr+' ORDER BY id, row DESC'
    ELSE IF @OrderType='3'
        
    SET @sqlstr=@sqlstr+' ORDER BY id, des DESC'
    EXEC(@sqlstr)
    --以上方法不易閱讀及維護,還有額外變量

    SELECT    * 
    FROM    #TMP 
    ORDER BY CASE WHEN    @OrderType='1' THEN row END DESC
             
    CASE WHEN    @OrderType='2' THEN id END,
             
    CASE WHEN    @OrderType='2' THEN row END DESC,
             
    CASE WHEN    @OrderType='3' THEN id END,
             
    CASE WHEN    @OrderType='3' THEN DES END DESC;
    --結果一致,CASE WHEN 方法不存在以上問題


    [注:ORDER BY 中使用CASE WHEN 是可以加 DESC 的]

  • 相关阅读:
    正则表达式
    Requests库基本使用(转载)
    prometheus + grafana + pushgateway 搭建监控可视化系统
    Docker的系统资源限制(转载)
    DAY8 文件操作
    DAY7 集合,深浅copy
    DAY6 Python之代码块,小数据池的详解
    DAY5 Python基础类型之字典
    DAY4 Python数据类型之列表
    DAY3 python基础之数据类型总览
  • 原文地址:https://www.cnblogs.com/ywkpl/p/1501868.html
Copyright © 2011-2022 走看看