mysql 合计 小计_用SQL实现统计报表中的小计与合计的方法详解
本篇文章是对使用SQL实现统计报表中的"小计"与"合计"的方法进行了详细的分析介绍,需要的朋友参考下
客户提出需求,针对某一列分组加上小计,合计汇总。网上找了一些有关SQL加合计的语句。都不是很理想。决定自己动手写。
思路有三个:1.很多用GROUPPING和ROLLUP来实现。 优点:实现代码简洁,要求对GROUPPING和ROLLUP很深的理解。
缺点:低版本的Sql Server不支持。
2.游标实现。 优点:思路逻辑简洁。
缺点:复杂和低效。
3.利用临时表。 优点:思路逻辑简洁,执行效率高。SQL实现简单。
缺点:数据量大时耗用内存.
综合三种情况,决定“利用临时表”实现。
实现效果原始表TB
加上小计,合计后效果
SQL语句
复制代码 代码如下:
select * into #TB from TB
select * into #TB1 from #TB where 1<>1
select distinct zcxt into #TBype from #TB order by zcxt
select identity(int,1,1) fid,zcxt into #TBype1 from #TBype
DECLARE @i int
DECLARE @k int
select @i=COUNT(*) from #TBype
set @k=0
DECLARE @strfname varchar(50)
WHILE @k < @i
BEGIN
Set @k =@k +1
select @strfname=zcxt from #TBype1 where fid =@k
set IDENTITY_INSERT #TB1 ON
insert into #TB1(fid,qldid,fa_cardid,ztbz,fa_name,model,i_number,gzrq,zcyz,ljzj,jz,sybm,zcxt,fa_ljjzzb)
select fid,qldid,fa_cardid,ztbz,fa_name,model,i_number,gzrq,zcyz,ljzj,jz,sybm,zcxt,fa_ljjzzb from
(
select * from #TB where zcxt=@strfname
union all
select 0 fid,'' qldid,'' fa_cardid,'' ztbz,'小计' fa_name,''
model,sum(i_number) as i_number,'' gzrq,sum(CAST(zcyz as money)) as
zcyz,sum(CAST(ljzj as money)) as ljzj,sum(CAST(jz as money)) as jz,''
sybm,'' zcxt,Sum(fa_ljjzzb) as fa_ljjzzb
from #TB where zcxt=@strfname
group by ztbz
) as B
set IDENTITY_INSERT #TB1 off
END
select qldid,fa_cardid,zcxt,fa_name,model,i_number,gzrq,zcyz,ljzj,jz,sybm,ztbz,fa_ljjzzb from #TB1
union all
select
'' qldid,'' fa_cardid,'' ztbz,'合计' fa_name,'' model,sum(i_number) as
i_number,'' gzrq,sum(CAST(zcyz as money)) as zcyz,sum(CAST(ljzj as
money)) as ljzj,sum(CAST(jz as money)) as jz,'' sybm,''
zcxt,Sum(fa_ljjzzb) as fa_ljjzzb
from #TB
drop table #TB1
drop table #TBype1
drop table #TBype
drop table #TB
扩展改进可以改写成一个通用的添加合计小计的存储过程
mysql 合计 小计_用SQL实现统计报表中的小计与合计的方法详解相关推荐
- mysql中group小计与合计_用SQL实现统计报表中的“小计”和“合计”
问题: 开发一个关于各烟叶等级的二次验级的原发件数.原发重量及验收重量的统计报表.其中,原发件数.原发重量和验收重量等列要求计算出各等级组别的小计和所有记录的合计. 语句: SELECT DECODE ...
- oralce rollup 小计合计_用SQL实现统计报表中的“小计”和“合计”
在开发统计报表的过程中,经常会碰到在查询到的数据集中,插入一些小计行和合计行.比如在烤烟系统中,几乎每个统计报表都需要加入"合计"行,还有不少涉及到烟叶等级的统计报表需要加入各烟叶 ...
- mysql小计_Mysql必读用SQL实现统计报表中的小计与合计的方法详解
<Mysql必读用SQL实现统计报表中的"小计"与"合计"的方法详解>要点: 本文介绍了Mysql必读用SQL实现统计报表中的"小计&qu ...
- 用SQL实现统计报表中的“小计”和“合计”
客户提出需求,针对某一列分组加上小计,合计汇总.网上找了一些有关SQL加合计的语句.都不是很理想.决定自己动手写. 思路有三个: 1.很多用GROUPPING和ROLLUP来实现. 优点实现代码简 ...
- 仓库码放要求_仓库货物堆放标准是怎样的?货物堆放原则和方法详解
仓库货物如何堆放是不少企业最头疼的问题之一.明明预计的场地足够,但到最后却有一大堆货物没处安放,员工的工作效率也极低,白白浪费了钱财与空间.而企业想要利用有限的空间发挥最大的作用就只有先了解仓库货物堆 ...
- mysql 批量导入sql_MySQL高效导入多个.sql文件方法详解
MySQL有多种方法导入多个.sql文件(里面是sql语句),常用的有两个命令:mysql和source. 但是这两个命令的导入效率差别很大,具体请看最后的比较. (还有sqlimport和LOAD ...
- mysql连接数详解_查看mysql当前连接数的方法详解
1.查看当前所有连接的详细资料: ./mysqladmin -uadmin -p -h10.140.1.1 processlist2.只查看当前连接数(Threads就是连接数.): ./mysqla ...
- mysql revoke 授权_浅谈MySQL中授权(grant)和撤销授权(revoke)用法详解
MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利 grant selec ...
- 小程序setdata优化_微信小程序 setData的使用方法详解
微信小程序 setData的使用方法详解 微信小程序 setData的使用方法详解 最近在使用微信小程序的setData时,遇到了以下问题.如下: 官网文档在使用setData()设置数组对象的某个元 ...
最新文章
- Python:尝试对知乎网验证码进行处理
- nginx虚拟主机解析php文件,window停nginx虚拟主机不能解析php
- android SQLite数据库的使用
- 2018-2019-1 《信息安全系统设计基础》 20165235 实验五 通信协议设计
- linux shell 自定义函数(定义、返回值、变量作用域)介绍
- mysql 快照能否恢复某个表_mysql全库备份恢复某个表
- os库的基本使用(复习)
- mac 安装使用Liteide
- js让网页标题闪动效果(记)
- 音频3A测试 AGC自动增益测试
- 【代码之路】我和代码的这两年,一路风雨,终见彩虹
- java中的match函数_javascript中match函数的用法小结
- 项目管理工具 - TAPD
- Contrastive Learning
- 立体匹配(Stereo Matching)
- 自动登录北科大USTB校园网
- FairGuard游戏加固兼容摸摸鱼和TAPTAP云玩
- 笔记本电脑触摸板无法使用(失灵)解决方案 (win10和win7通用)
- java中映射关系Map
- PHPCMS V9学习笔记(配置): 后台界面模板在线编辑
热门文章
- 生产环境CPU飙高问题解决,记一次完整解决过程
- 隐私政策-第三方SDK汇总
- VScode 中运行C++,并用g++命令、CMake、配置launch.josn和tasks.json来运行和调试可执行文件
- 那个找不到工作的iOS程序猿
- 如何规避适配风险?以《乱世王者》为例,探秘手游兼容性测试之路
- cpu、内存、硬盘之间的关系
- 这个时代“寒门再难出贵子” (转帖)
- 东北java第一人_东北一“巨富豪宅”,号称“吉林第一宅”,主人曾是“大财主”...
- 看完315晚会,我们的数据隐私谁来保护?
- 一个新进前端小白实习僧的初次探索