| 您的当前位置:首页 --> MYSQL教程 --> 用SQL实现统计报表中的"小计"与"合计"的方法详解 |
| MYSQL教程 用SQL实现统计报表中的"小计"与"合计"的方法详解 |
| 浏览次数:1117 关键词 ( ) |
| 查看使用该CPU的产品 查看CPU天梯 |
| CPU型号:用SQL实现统计报表中的"小计"与"合计"的方法详解 |
| 主频:Ghz |
| 睿频:Ghz |
| 核心数:个 |
| 不支持超核心 |
| 制作工艺: |
| 插槽类型: |
| 功耗:0W |
| L3缓存:0MB |
| 支持最大内存: 0GB |
| CPU详细参数 |
|
客户提出需求,针对某一列分组加上小计,合计汇总。网上找了一些有关SQL加合计的语句。都不是很理想。决定自己动手写。 综合三种情况,决定“利用临时表”实现。
加上小计,合计后效果
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 扩展改进 可以改写成一个通用的添加合计小计的存储过程。 |
| 下一个产品 SQL计算timestamp的差值的方法 上一个产品 探讨:sql插入空,默认1900-01-01 00:00:00.000的解决方法详解 |