实现数据分类汇总的SQL语句

<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 728x15, 创建于 08-4-23MSDN */ google_ad_slot = "3624277373"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 160x600, 创建于 08-4-23MSDN */ google_ad_slot = "4367022601"; google_ad_width = 160; google_ad_height = 600; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

现有表Test,内容如下: ID   Catalog    Num 1         A            3 1         B           52         A           8 2         B           2 现在想按ID查询出这种结果:-------------------- 1        A           31        B           5汇总小计:     82         A          8 2         B           2汇总小计:    10  问:该如何实现?

在生成包含小计和合计的报表时,ROLLUP运算符很有用。ROLLUP运算符生成的结果集类似于CUBE运算符所生成的结果集。========================CUBE运算符生成的结果集是多维数据集。多维数据集是事实数据的扩展,事实数据即记录个别事件的数据。扩展建立在用户打算分析的列上。这些列被称为维。多维数据集是一个结果集,其中包含了各维度的所有可能组合的交叉表格。 CUBE运算符在SELECT语句的GROUPBY子句中指定。该语句的选择列表应包含维度列和聚合函数表达式。GROUPBY应指定维度列和关键字WITHCUBE。结果集将包含维度列中各值的所有可能组合,以及与这些维度值组合相匹配的基础行中的聚合值。=========================  CUBE和ROLLUP之间的区别在于:  CUBE生成的结果集显示了所选列中值的所有组合的聚合。 ROLLUP生成的结果集显示了所选列中值的某一层次结构的聚合。

TheROLLUPoperatorisusefulingeneratingreportsthatcontainsubtotalsandtotals.TheROLLUPoperatorgeneratesaresultsetthatissimilartotheresultsetsgeneratedbytheCUBEoperator.

ThedifferencesbetweenCUBEandROLLUPare:
CUBEgeneratesaresultsetshowingaggregatesforallcombinationsofvaluesintheselectedcolumns.ROLLUPgeneratesaresultsetshowingaggregatesforahierarchyofvaluesintheselectedcolumns.
最后查询语句如下:

SELECT CASE WHEN (GROUPING(ID) = 1) THEN 'ALL'            ELSE ISNULL(ID, 'UNKNOWN')       END AS ID,       CASE WHEN (GROUPING(Catalog) = 1) THEN 'ALL'            ELSE ISNULL(Catalog, 'UNKNOWN')       END AS Catalog,       SUM(Num) AS NumFROM TestGROUP BY ID, CatalogWITH ROLLUP1
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 728x15, 创建于 08-4-23MSDN */ google_ad_slot = "3624277373"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 160x600, 创建于 08-4-23MSDN */ google_ad_slot = "4367022601"; google_ad_width = 160; google_ad_height = 600; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
阅读更多
文章标签: sql 扩展 报表
个人分类: 数据库
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭