--測试数据

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分级汇总的更多相关文章

  1. SQL小汇总

    SQL小汇总 1.对每个时段的数据进行统计2.查询时间条件(to_date)3.插入序列号和系统时间4.查询当天.7天内.30天内5.查询前后x小时.分钟.天.月.6.保留小数点后4位7.查询字段A中 ...

  2. SQL语句汇总(终篇)—— 表联接与联接查询

    上一篇博文说到相关子查询效率低下,那我们怎么能将不同表的信息一起查询出来呢?这就需要用到表联接. 和之前的UNION组合查询不同,UNION是将不同的表组合起来,也就是纵向联接,说白了就是竖着拼起来. ...

  3. SQL语句汇总(一)——数据库与表的操作以及创建约束

    首先,非常感谢大家对上篇博文的支持,真是让本菜受宠若惊,同时对拖了这么久才出了此篇表示抱歉. 前言:此文旨在汇总从建立数据库到联接查询等绝大部分SQL语句.SQL语句虽不能说很多,但稍有时间不写就容易 ...

  4. 初级SQL开发汇总指南

    汇总部分内容来自网络(作者  :zhtbs),比较基础的东西,能够了解比较基础的一些东西. Select语句概要 数据库中数据的提取(查询)使用select 语法,主要有以下几点作用 l  提取的数据 ...

  5. SQL语句汇总(终篇)—— 表联接与联接查询

    既然是最后一篇那就不能只列出些干枯的标准语句,更何况表联接也是SQL中较难的部分,所以此次搭配题目来详细阐述表联接. 上一篇博文说到相关子查询效率低下,那我们怎么能将不同表的信息一起查询出来呢?这就需 ...

  6. SQL语句汇总(一)——数据库与表的操作以及创建约束

    首先,非常感谢大家对上篇博文的支持,真是让本菜受宠若惊,同时对拖了这么久才出了此篇表示抱歉. 前言:此文旨在汇总从建立数据库到联接查询等绝大部分SQL语句.SQL语句虽不能说很多,但稍有时间不写就容易 ...

  7. SQL练习题汇总(Sqlserver和Mysql版本)

    所需表及数据执行脚本: CREATE TABLE STUDENT (SNO ) NOT NULL, SNAME ) NOT NULL, SSEX ) NOT NULL, SBIRTHDAY DATET ...

  8. MS SQL 分类汇总参数 grouping(**)=1 rollup cubt

    转:http://www.111cn.net/database/mssqlserver/43368.htm 本文章介绍了关于sql多级分类汇总实现方法及数据结构,有碰到问题的同学可参考一下. 据库结构 ...

  9. 基本Sql语句汇总

    关于Sql语句的学习,选择的DBMS为SQL Server,Sql语句随着工作中的应用不断补充,不具备系统性,为个人笔记汇总,网上有很多优秀的资源,故不对每一处应用做过多细致的说明,后期会对部分篇幅较 ...

随机推荐

  1. 大数据学习——sparkSql对接hive

    1.   安装mysql 2.   上传.解压.重命名 2.1.  上传 在随便一台有hadoop环境的机器上上传安装文件 su - hadoop rz –y 2.2.  解压 解压缩:apache- ...

  2. 【转载】logistic回归

    原文地址:https://www.cnblogs.com/zichun-zeng/p/3824745.html 1. logistic回归与一般线性回归模型的区别: (1)     线性回归的结果变量 ...

  3. ACM程序设计选修课——Problem D: (ds:树)合并果子(最优二叉树赫夫曼算法)

    Problem D: (ds:树)合并果子 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 80  Solved: 4 [Submit][Status][ ...

  4. [POI2006] KRA-The Disks (贪心)

    题目描述 For his birthday present little Johnny has received from his parents a new plaything which cons ...

  5. 解决c#所有单线程单元(STA)线程都应使用泵式等待基元(如 CoWaitForMultipleHandles),并在运行时间很长的操作过程中定期发送消息。 转载

    最近做一个后来程序,启动了事务后有一段操作业务,当运行一段时间后,出现这个异常 CLR 无法从 COM 上下文 0x1b1c38 转换为 COM 上下文 0x1b1da8,这种状态已持续 60 秒.拥 ...

  6. 一个老忘且非常有用的jquery动画方法 网页上卷

    $('html,body').animate({scrollTop:800+'px'},500) //网页上卷800像素 在半秒之内

  7. LeetCode OJ--Unique Paths II **

    https://oj.leetcode.com/problems/unique-paths-ii/ 图的深搜,有障碍物,有的路径不通. 刚开始想的时候用组合数算,但是公式没有推导出来. 于是用了深搜, ...

  8. LeetCode OJ——Validate Binary Search Tree

    http://oj.leetcode.com/problems/validate-binary-search-tree/ 判断一棵树是否为二叉搜索树.key 是,在左子树往下搜索的时候,要判断是不是子 ...

  9. AC日记——【模板】最近公共祖先(LCA)洛谷 P3379

    题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先. 输入输出格式 输入格式: 第一行包含三个正整数N.M.S,分别表示树的结点个数.询问的个数和树根结点的序号. 接下来N-1行每 ...

  10. AC日记——绿色通道 codevs 3342

    3342 绿色通道  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description <思远高考绿色通道&g ...