成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL Server數據庫相關數據大匯和

數據庫 SQL Server
以下的文章主要是闡述SQL Server數據庫的相關數據匯總,如果你對其心存好奇的話,以下的文章,你一定不要錯過。

此文章主要向大家描述的是SQL Server數據庫的相關數據匯總,完全解析(WITH ROLLUP)我前兩天在相關網站看見的SQL Server數據庫的數據匯總完全解析(WITH ROLLUP)資料,覺得挺好,就拿出來供大家分享。現有表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 生成的結果集顯示了所選列中值的某一層次結構的聚合。

看完以上的這段話,悟出了什么沒有?如果沒有,那么……嘿嘿,你的悟性還不夠喲,離“三花棸頂”還早著呢:)。接下來我們再看一段(注意喲,答案馬上就揭曉了):

SELECT 編碼, 倉庫, Sum(數量) as 數量

FROM A

GROUP BY 編碼, 倉庫 WITH ROLLUP

關鍵就是后面的WITH ROLLUP

當然,你也可以用WITH CUBE,但是結果會有點不大一樣

可能看完上面這段你還是覺得“云里霧里”,摸不著頭腦。實在不明白也沒關系,自己動手做。

首先:建一個上面所說的A表,輸入幾行數據;

接著:打開你的SQL Server查詢分析器,連上包含你上面所建A表的服務器,選擇包含該表的SQL Server數據庫;

然后:Copy上面這段SQL 語句,Paste到查詢分析器中,按F5,怎么樣?看到下面出來了什么?是不是和我下面的一樣?

編碼 倉庫 數量

01 A 6

01 B 7

01 NULL 13

02 A 8

02 B 9

02 NULL 17

NULL NULL 30

如果你用的是WITH CUBE,結果集的后面還會多出兩條(如果你也只是輸入示例中的幾行數據的話):

NULL A 14

NULL B 16

咦!奇怪,結果中怎么有那么多“NULL”值?哈,別急,這幾行正是我們所要的匯總數據行,不難看出:

01NULL13正是對編碼為01的所有倉庫中的數量的匯總;02NULL17是對編碼為02的所有倉庫的數量的匯總;

NULLNULL30是對所有資料行數量的匯總。

如何?答案出來了吧?是不是很簡單呢?當然,上面還有點美中不足,那就是有好多“NULL”的存在。如何去掉這些無意義的NULL呢?下面我們再進行優化。

1、用Grouping替換NULL值

SELECT CASE WHEN (GROUPING(編碼) = 1) THEN 'ALL'

ELSE ISNULL(編碼, 'UNKNOWN')

END AS 編碼,

CASE WHEN (GROUPING(倉庫) = 1) THEN 'ALL'

ELSE ISNULL(倉庫, 'UNKNOWN')

END AS 倉庫,

SUM(數量) AS 數量

FROM A

GROUP BY 編碼, 倉庫 WITH ROLLUP

適當的運用Case函數

結果我這里就不寫了,就是把上面的“NULL”值全部換成“ALL”字符串

2、利用程序做進一步的優化

通常為了顯示上的需要,我們必須對以上SQL語句生成的結果做一些優化,下面給出自然語言描述:

WHILE(未到達***一條記錄){

IF 編碼值不為ALL而倉庫值為ALL

將編碼值用“小計:”替換,將倉庫值用""替換;

將這一行的顏色標示為灰色;

ELSE 編碼值為ALL倉庫值也為ALL

將編碼值用“總計:”替換,將倉庫值用""替換;

將這一行的著色標示為淡綠色;

指針移到下一條;

}

以上的相關內容就是對SQL Server數據庫的數據匯總完全解析(WITH ROLLUP)的介紹,望你能有所收獲。

【編輯推薦】

  1. SQL Server 2000刪除實戰演習
  2. SQL Server數據庫的臨時表的正確操作步驟
  3. 卸載SQL Server 2005組件的正確順序
  4. 對SQL Server字符串數據類型的具體描述
  5. SQL Server浮點數據類型的詳細解析
責任編輯:佚名 來源: csdn.net
相關推薦

2010-07-08 11:05:14

SQL Server數

2010-07-15 17:28:50

SQL Server

2021-03-19 07:12:23

SQL Server數據庫數據庫收縮

2021-03-24 14:50:00

SQLServer數據庫字符串

2011-08-04 15:20:52

SQL Server數據庫鏡像

2011-08-25 16:31:36

SQL Servertimestamp

2010-07-22 11:17:52

SQL Server數

2021-05-17 06:57:34

SQLServer數據庫

2021-03-04 22:02:18

SQL Serve數據庫架構

2010-07-05 13:29:56

2010-11-29 11:55:47

SYBASE數據庫

2010-07-08 16:13:48

2011-03-03 13:43:29

2011-08-25 15:19:25

SQL Server 排序規則

2010-07-07 14:24:42

SQL Server

2009-03-19 09:44:07

SQL Server數據庫遷移數據庫

2011-04-01 17:05:44

SQL Server數日志

2011-04-29 14:30:23

2010-06-30 11:16:50

SQL Server

2011-03-21 10:13:31

Sql Server數分區
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久99视频 | 翔田千里一区二区 | 麻豆国产精品777777在线 | 91精品久久久久 | 久久99网站 | 亚洲高清成人 | 精品乱码一区二区三四区视频 | 中文字幕在线精品 | 国产毛片毛片 | aaaa一级毛片 | 国产一区二区在线免费观看 | 久久黄视频 | 一二区成人影院电影网 | 精品网 | 伊人欧美视频 | xx视频在线观看 | 欧美一级在线 | 中国美女撒尿txxxxx视频 | 亚洲天堂中文字幕 | 国产精品伦理一区二区三区 | 91精品一区二区三区久久久久 | 婷婷久久综合 | 日韩欧美字幕 | 毛片一区二区三区 | 欧美黄视频 | 免费人成在线观看网站 | 久草综合在线视频 | 国产视频福利一区 | 97精品一区二区 | 性色视频| 99精品欧美一区二区蜜桃免费 | 在线观看av网站永久 | 国产亚洲精品久久久久动 | 国产一区久久久 | h视频在线免费 | 欧美一区二区三区电影 | 日本三级黄视频 | 亚洲日本一区二区 | 亚洲国产成人av好男人在线观看 | 国产精品一区二区久久精品爱微奶 | 国产精品一区二区av |