程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server數據庫的數據匯總完全解析

SQL Server數據庫的數據匯總完全解析

編輯:關於SqlServer

前言:

在論壇上經常看到有人問“如何實現數據的分類匯總”,很多的人都是介紹這樣或那樣的控件來實現,而沒有從關系數據庫語言(SQL)的本身來考慮實現方法。這裡,我就借一個實例來說明如何借助SQL自身強大的功能來實現數據的分類匯總。

問題的提出:

現有表A,內容如下:

編碼  倉庫  數量
01   A    6
01   B    7
02   A    8
02   B    9

現在想按編碼查詢出這種格式:

\
01   A    6
01   B    7
匯總小計:   13
02   A    8
02   B    9
匯總小計:   17

問:該如何實現?

乍一看,好像很容易,用group by好像能實現?但仔細研究下去,你又會覺得group by也是無能為力,總欠缺點什麼,無從下手。那麼,到底該如何做呢?別急,SQL Server早就幫我們做好了,下面,跟我來。

首先,讓我們來看一段話:

在生成包含小計和合計的報表時,ROLLUP 運算符很有用。ROLLUP 運算符生成的結果集類似於 CUBE 運算符所生成的結果集。

CUBE 運算符生成的結果集是多維數據集。多維數據集是事實數據的擴展,事實數據即記錄個別事件的數據。擴展建立在用戶打算分析的列上。這些列被稱為維。多維數據集是一個結果集,其中包含了各維度的所有可能組合的交叉表格。

CUBE 運算符在 SELECT 語句的 GROUP BY 子句中指定。該語句的選擇列表應包含維度列和聚合函數表達式。GROUP BY 應指定維度列和關鍵字 WITH CUBE。結果集將包含維度列中各值的所有可能組合,以及與這些維度值組合相匹配的基礎行中的聚合值。

CUBE 和 ROLLUP 之間的區別在於:
  CUBE 生成的結果集顯示了所選列中值的所有組合的聚合。

ROLLUP 生成的結果集顯示了所選列中值的某一層次結構的聚合。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved