通常,我們在寫web應用程序中,會經常用到分類數據統計的功能。在一個電子商務網站中,我們往往對銷售的每類商品的銷售額,銷售的數量要進行分類統計。那么,在asp.net中,我們如何用datagrid,一方面顯示數據庫中的數據,一方面又能按類別對數據進行分類統計呢?方法應該有很多種,但在這里,想介紹一種容易被人遺忘的方法,那就是使用MSSQL SERVER中的roll up語句了。
讓我們先來介紹下ms sql server中的roll up語句。Roll up語句,在對統計的數據既要進行分類求和,又要求其總和時,是十分有用的。Roll up語句必須配合group by使用,舉個例子,比如在northwind數據庫中,為了返回同一目錄下的產品總價格,和庫存量,可以使用如下sql 語句:
返回的結果如下
而如果想既列出分類中所有產品,又能分類統計出每個分類的產品,價格統計總數,那么roll up就大有用武之地了。我們想達到的效果可以用下圖表示:
請注意上表中黃色的部分,比如,
表示meat/poultry這個分類中的產品總價格和數量,這就達到了分類統計的目的,最后一行
表示所有分類中產品的總價格和總的數量。可以看出,roll up的實質就是按列,既對分類求和又求所有分類的總和,但要注意一點,roll up在做分類統計時,會在某些字段插入空值,比如,在
中,rollup在做分類統計時,首先是會以下面的形式出現
那么如何將這些null值替換掉呢,可以使用下面的語句:
其中,使用case when..else 的語句時,當productname一列中遇到有null值時,用"subtotal"來代替,當categoryname一列中遇到有null值時,用"maintotal"值來代替。[original text ]【未完待續】
(責任編輯:趙紀雷)