日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

【T-SQL系列】WITH ROLLUP、WITH CUBE、GROUPIN

系統 2902 0

原文:    【T-SQL系列】WITH ROLLUP、WITH CUBE、GROUPING語句的應用    


CUBE 和 ROLLUP 之間的區別在于:
CUBE 運算符生成的結果集是多維數據集。多維數據集是事實數據的擴展,事實數據即記錄個別事件的數據。擴展建立在用戶打算分析的列上。這些列被稱為維。多維數據集是一個結果集,其中包含了各維度的所有可能組合的交叉表格。
CUBE 運算符在 SELECT 語句的 GROUP BY 子句中指定。該語句的選擇列表應包含維度列和聚合函數表達式。GROUP BY 應指定維度列和關鍵字 WITH CUBE。結果集將包含維度列中各值的所有可能組合,以及與這些維度值組合相匹配的基礎行中的聚合值。

CUBE 生成的結果集顯示了所選列中值的所有組合的聚合。
ROLLUP 生成的結果集顯示了所選列中值的某一層次結構的聚合。
GROUPING:
當用 CUBE 或 ROLLUP 運算符添加行時,附加的列輸出值為1,當所添加的行不是由 CUBE 或 ROLLUP 產生時,附加列值為0。

需要注意的是,使用有 WITH ROLLUP 子句的 GROUP BY 語句時,不能再使用 ORDER BY 語句對結果集進行排序,如果對返回的結果順序不滿意,需要應用程序獲得結果后在程序中進行排序。
示例:

  DECLARE        @T        TABLE        

    (

      名稱 
        VARCHAR        (      10        ) ,

      出版商 
        VARCHAR        (      10        ) ,

      價格1 
        INT         ,

      價格2 
        INT        

    )        INSERT        @T        SELECT        '        a        '         ,                
        '        北京        '         ,                
        11         ,                
        22        UNION        ALL        SELECT        '        a        '         ,                
        '        四川        '         ,                
        22         ,                
        33        UNION        ALL        SELECT        '        b        '         ,                
        '        四川        '         ,                
        12         ,                
        23        UNION        ALL        SELECT        '        b        '         ,                
        '        北京        '         ,                
        10         ,                
        20        UNION        ALL        SELECT        '        b        '         ,                
        '        昆明        '         ,                
        20         ,                
        30        SELECT        *        FROM        @T        --        WITH CUBE         
        SELECT          名稱 ,

        出版商 ,        
        SUM        (價格1) 
      AS         價格1 ,        
        SUM        (價格2) 
      AS         價格2 ,        
        GROUPING        (名稱) 
      AS         CHECK名稱 ,        
        GROUPING        (出版商) 
      AS         CHECK出版商        FROM        @T        GROUP        BY         名稱 ,

        出版商        
        WITH         CUBE        


        --        WITH ROLLUP        SELECT          名稱 ,

        出版商 ,        
        SUM        (價格1) 
      AS         價格1 ,        
        SUM        (價格2) 
      AS         價格2        FROM        @T        GROUP        BY         名稱 ,

        出版商        
        WITH         ROLLUP   

        


        --        GROUPING        
        SELECT        CASE        WHEN         ( 
      GROUPING        (名稱) 
      =        1         ) 
      THEN        '        總計        '        ELSE        ISNULL        (名稱, 
      '        UNKNOWN        '        )        
        END        AS         名稱 ,        
        CASE        WHEN         ( 
      GROUPING        (出版商) 
      =        1         ) 
      THEN        '        小計        '        ELSE        ISNULL        (出版商, 
      '        UNKNOWN        '        )        
        END        AS         出版商 ,        
        SUM        (價格1) 
      AS         價格1 ,        
        SUM        (價格2) 
      AS         價格2        FROM        @T        GROUP        BY         名稱 ,

        出版商        
        WITH         ROLLUP

 

WITH CUBE 結果集:
張軍博客  

WITH ROLLUP 結果集:
張軍博客  

GROUPING結果集:
張軍博客  

 【T-SQL系列】WITH ROLLUP、WITH CUBE、GROUPING語句的應用  


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 平阴县| 平遥县| 东宁县| 汾西县| 井研县| 周至县| 南投市| 肃宁县| 武安市| 洪雅县| 东至县| 高密市| 德安县| 隆德县| 佛山市| 肥乡县| 双峰县| 沧州市| 兴安县| 泽库县| 洞头县| 从化市| 安宁市| 甘谷县| 凌海市| 博白县| 北流市| 郧西县| 金平| 聂拉木县| 教育| 新河县| 五大连池市| 临西县| 伊宁县| 习水县| 万源市| 萍乡市| 西藏| 从化市| 融水|