当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2011-01-25 23:11:00  来源:本站整理

<b>若何给SQL查询增添合计行(1)</b>[MSSQL防范]

赞助商链接



  本文“<b>若何给SQL查询增添合计行(1)</b>[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

SQL查询是SQL数据库的核心功效,下面为您介绍给SQL查询增添合计行的办法示例,供您参考,但愿对您学习SQL查询能有所帮忙.

.数据表t_test
id      贩卖人员id         商品id           数目

id       emp_id            product_id       qty

1        01                     001               200

2        01                     002               300

2        01                     002               400

3        02                      001              400

4        02                      002              500
 

  1. Create table #t_test(  
  2. id int not null,  
  3. emp_id int not null,  
  4. product_id int not null,  
  5. qty int not null  
  6. )  
  7. insert into #t_test values(1,01,001,200)  
  8. insert into #t_test values(2,01,002,300)  
  9. insert into #t_test values(3,01,002,400)  
  10. insert into #t_test values(4,02,001,400)  
  11. insert into #t_test values(5,02,002,500)  
  12.  
  13. select *   
  14. from #t_test 


2.需求得到的后果

需求得到近似下面的后果

--------------------------------------

emp_id                    qty

01                           900

02                           900

合计                        1800

--------------------------------------

大家看到了,这里加上了一个合计列

参考sql语句以下

  1. -- for MS SQL Server 2005  
  2. select isnull(CONVERT(varchar(20), emp_id),'Total') as 'emp_id'   
  3.     ,sum(qty) as 'qty_Total'  
  4. from #t_test  
  5. group by emp_id  
  6. with rollup 

SQL查询的后果以下所示

emp_id qty_Total

1 900
2 900
Total 1800

3.负责一点,统计每个贩卖人员以及商品的数目

--------------------------------------

emp_id         product_id             qty

01                 001                        200

01                  001                       700

01                  小计                      900

02                 001                          400

02                 002                          500

02                 小计                         900

合计                                            1800

--------------------------------------

由于要统计合计以及小计,不能简单的用nvl来产生"合计"了,要用grouping函数,来判断者某行能否有rollup产生的合计行,

  1. select  
  2.  
  3. case when grouping(emp_id)=1 and grouping(product_id)=1 then '合计' else emp_id end emp_id,  
  4.  
  5. case when grouping(emp_id)=0 and grouping(product_id)=1 then '小计' else procudt_id end product_id,  
  6.  
  7. sum(qty) qty  
  8.  
  9. from t_test  
  10.  
  11. group by rollup(emp_id,product_id)  
  12.  

注意,grouping(emp_id)=1,阐明是有rollup函数生成的行,0为数据库本身有的行.   以上是“<b>若何给SQL查询增添合计行(1)</b>[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .