sql分级汇总
--測试数据
create table tb([DB-ID] varchar(10),ENTITY varchar(10),DATE varchar(10),[CUST-NO] int,AMOUNT decimal(10,2),TAX decimal(10,2))
insert tb select 'RCHQ','001','2004-11-10',200000,100.00,17.00
union all select 'RCHQ','001','2004-11-10',200000,200.00,34.00
union all select 'RCHQ','001','2004-11-12',200000,150.00,25.50
union all select 'RCHQ','002','2004-11-10',200000,100.00,17.00
union all select 'RCHQ','002','2004-11-10',200000,200.00,34.00
union all select 'RCHQ','002','2004-11-12',200000,150.00,25.50
go
--查询
select [DB-ID],ENTITY,DATE,[CUST-NO],AMOUNT,TAX
from(
    select [DB-ID]=case 
            when grouping([DB-ID])=1 then '合计'
            else [DB-ID] end
        ,ENTITY=case 
            when grouping([DB-ID])=1 then ''
            when grouping(ENTITY)=1 then '小计'
            else ENTITY end
        ,DATE=case 
            when grouping([DB-ID])=1 then ''
            when grouping(ENTITY)=1 then ''
            when grouping(DATE)=1 then '小计'
            else DATE end
        ,[CUST-NO]=case 
            when grouping([DB-ID])=1 then ''
            when grouping(ENTITY)=1 then ''
            when grouping(DATE)=1 then ''
            when grouping([CUST-NO])=1 then '小计'
            else cast([CUST-NO] as varchar) end
        ,AMOUNT=sum(AMOUNT),TAX=sum(TAX)
        ,s1=grouping([DB-ID]),s2=[DB-ID]
        ,s3=grouping(ENTITY),s4=ENTITY
        ,s5=grouping(DATE),s6=DATE
        ,s7=grouping([CUST-NO]),s8=[CUST-NO]
    from tb
    group by [DB-ID],ENTITY,DATE,[CUST-NO] with rollup
    having grouping([CUST-NO])=1
    union all
    select [DB-ID],ENTITY,DATE,cast([CUST-NO] as varchar),AMOUNT,TAX
        ,s1=0,s2=[DB-ID]
        ,s3=0,s4=ENTITY
        ,s5=0,s6=DATE
        ,s7=0,s8=[CUST-NO]
    from tb 
)a order by s1,s2,s3,s4,s5,s6,s7,s8
go
--删除測试
drop table tb
/**
DB-ID	ENTITY	DATE	CUST-NO	AMOUNT	TAX
RCHQ	001	2004-11-10	200000	100.00	17.00
RCHQ	001	2004-11-10	200000	200.00	34.00
RCHQ	001	2004-11-10	小计	300.00	51.00
RCHQ	001	2004-11-12	200000	150.00	25.50
RCHQ	001	2004-11-12	小计	150.00	25.50
RCHQ	001	小计		450.00	76.50
RCHQ	002	2004-11-10	200000	100.00	17.00
RCHQ	002	2004-11-10	200000	200.00	34.00
RCHQ	002	2004-11-10	小计	300.00	51.00
RCHQ	002	2004-11-12	200000	150.00	25.50
RCHQ	002	2004-11-12	小计	150.00	25.50
RCHQ	002	小计		450.00	76.50
RCHQ	小计			900.00	153.00
合计				900.00	153.00
*/
sql分级汇总的更多相关文章
- SQL小汇总
		
SQL小汇总 1.对每个时段的数据进行统计2.查询时间条件(to_date)3.插入序列号和系统时间4.查询当天.7天内.30天内5.查询前后x小时.分钟.天.月.6.保留小数点后4位7.查询字段A中 ...
 - SQL语句汇总(终篇)—— 表联接与联接查询
		
上一篇博文说到相关子查询效率低下,那我们怎么能将不同表的信息一起查询出来呢?这就需要用到表联接. 和之前的UNION组合查询不同,UNION是将不同的表组合起来,也就是纵向联接,说白了就是竖着拼起来. ...
 - SQL语句汇总(一)——数据库与表的操作以及创建约束
		
首先,非常感谢大家对上篇博文的支持,真是让本菜受宠若惊,同时对拖了这么久才出了此篇表示抱歉. 前言:此文旨在汇总从建立数据库到联接查询等绝大部分SQL语句.SQL语句虽不能说很多,但稍有时间不写就容易 ...
 - 初级SQL开发汇总指南
		
汇总部分内容来自网络(作者 :zhtbs),比较基础的东西,能够了解比较基础的一些东西. Select语句概要 数据库中数据的提取(查询)使用select 语法,主要有以下几点作用 l 提取的数据 ...
 - SQL语句汇总(终篇)—— 表联接与联接查询
		
既然是最后一篇那就不能只列出些干枯的标准语句,更何况表联接也是SQL中较难的部分,所以此次搭配题目来详细阐述表联接. 上一篇博文说到相关子查询效率低下,那我们怎么能将不同表的信息一起查询出来呢?这就需 ...
 - SQL语句汇总(一)——数据库与表的操作以及创建约束
		
首先,非常感谢大家对上篇博文的支持,真是让本菜受宠若惊,同时对拖了这么久才出了此篇表示抱歉. 前言:此文旨在汇总从建立数据库到联接查询等绝大部分SQL语句.SQL语句虽不能说很多,但稍有时间不写就容易 ...
 - SQL练习题汇总(Sqlserver和Mysql版本)
		
所需表及数据执行脚本: CREATE TABLE STUDENT (SNO ) NOT NULL, SNAME ) NOT NULL, SSEX ) NOT NULL, SBIRTHDAY DATET ...
 - MS SQL 分类汇总参数 grouping(**)=1 rollup cubt
		
转:http://www.111cn.net/database/mssqlserver/43368.htm 本文章介绍了关于sql多级分类汇总实现方法及数据结构,有碰到问题的同学可参考一下. 据库结构 ...
 - 基本Sql语句汇总
		
关于Sql语句的学习,选择的DBMS为SQL Server,Sql语句随着工作中的应用不断补充,不具备系统性,为个人笔记汇总,网上有很多优秀的资源,故不对每一处应用做过多细致的说明,后期会对部分篇幅较 ...
 
随机推荐
- Python中__get__ ,__getattr__ ,__getattribute__用法与区别?
			
class C(object): a = 'abc' def __getattribute__(self, *args, **kwargs): print("__getattribute__ ...
 - [USACO Section 2.1]城堡 The Castle (搜索)
			
题目链接 Solution 比较恶心的搜索,思路很简单,直接广搜找联通块即可. 但是细节很多,要注意的地方很多.所以直接看代码吧... Code #include<bits/stdc++.h&g ...
 - Element 'plugin' cannot have character [children], because the type's content type is element-only
			
原因是你复制的时候,带了一些特殊符号. 解决方案: 将那一串代码复制到notpad++ 或者文本上面,再复制到你的编译器里面,就可以解决问题了
 - linux  maven安装(三)
			
1.下载maven http://maven.apache.org/download.cgi 我下载的是:apache-maven-3.3.9-bin.tar.gz 解压:tar -zxvf apac ...
 - 浅谈Linux下的五种I/O模型   两篇别人的博客
			
http://blog.csdn.net/sinat_34990639/article/details/52778562 http://www.cnblogs.com/chy2055/p/5220 ...
 - FZOJ Problem 2148 Moon Game
			
Proble ...
 - mybatis如何传入一个list参数
			
<!-- 7.2 foreach(循环List<String>参数) - 作为where中in的条件 --> <select id="getStudentLi ...
 - 一款基于bootstrap的文件上传插件,现在很多手机webapp都在用
			
官网:http://plugins.krajee.com/file-input
 - JAVA特性面试题:
			
1.简要介绍java程序的健壮性. 答:JAVA程序会在编译和运行的时候自动的检测可能出现的错误,而且它是一种强类型语言,对于类型的检查很严格,而且它的垃圾回收机制也有效的避免了内存的泄漏. 2.为什 ...
 - 转 Python执行系统命令的方法
			
传送门 Python执行系统命令的方法 http://www.linux-field.com/?p=15 Python中执行系统命令常见方法有两种: 两者均需 import os (1) os.sys ...