GO
alter proc [zsp_BranchsData]
as
begin
/*
CREATE TABLE [原始机构数据]
(
[序号] [varchar](50) NULL,
[一级分行号] [varchar](50) NULL,
[一级分行名称] [varchar](50) NULL,
[二级分行号] [varchar](50) NULL,
[二级分行名称] [varchar](50) NULL,
--[上级机构号] [varchar](50) NULL,
--[上级机构名称] [varchar](50) NULL,
--[责任中心号] [varchar](50) NULL,
--[责任中心名称] [varchar](50) NULL
)
*/
SELECT
--GROUPING([一级分行号])
--,
[一级分行号] =
iif
(
GROUPING([一级分行号]) = 1
, '合计:'
, [一级分行号]
) ,
[一级分行名称] =
iif
(
GROUPING([一级分行号]) = 1
,
cast
(
count(distinct [一级分行号]) as varchar
)
, max([一级分行名称])
) ,
[二级分行数量] = count(distinct [二级分行号])
FROM
[原始机构数据]
group by
--[一级分行号]
rollup
(
[一级分行号]
)
order by
GROUPING([一级分行号])
, [一级分行号]
select
[二级分行号] ,
[二级分行名称] = max([二级分行名称]) ,
[一级分行号] = max([一级分行号]) ,
[一级分行名称] = max([一级分行名称])
from
[原始机构数据]
group by
[二级分行号]
order by
3
;with T
as
(
SELECT
[一级分行组] = GROUPING([一级分行号]) ,
[全辖一级分行序号] = DENSE_RANK()
over
(
order by
[一级分行号]
) - 1 ,
[一级分行号] =
iif
(
GROUPING([一级分行号]) = 1
, '全部合计:'
, [一级分行号]
) ,
[一级分行名称] =
case
when
GROUPING([一级分行号]) = 1
then
cast(count(distinct [一级分行号]) as varchar)
when
GROUPING([二级分行号]) = 1
and GROUPING([一级分行号]) = 0
then
max([一级分行名称]) + ' 分组'
else
max([一级分行名称])
end ,
[二级分行组] = GROUPING([二级分行号]) ,
[辖内二级分行序号] = ROW_NUMBER()
over
(
partition by
[一级分行号]
order by
[二级分行号]
) - 1 ,
[二级分行号] =
case
when
GROUPING([一级分行号]) = 1
and GROUPING([二级分行号]) = 1
then
'全部合计:'
when
GROUPING([二级分行号]) = 1
then
'分组小计:'
else
[二级分行号]
end ,
[二级分行名称] =
iif
(
GROUPING([二级分行号]) = 1
, cast(count(distinct [二级分行号]) as varchar)
, max([二级分行名称])
)
FROM
[原始机构数据]
group by
--[一级分行号]
rollup
(
[一级分行号]
, [二级分行号]
)
)
select
--[一级分行组] ,
[全辖一级分行序号] ,
[一级分行号] ,
[一级分行名称] ,
--[二级分行组] ,
[辖内二级分行序号] ,
[二级分行号] ,
[二级分行名称]
from
T
order by
[一级分行号] ,
[一级分行组] ,
[二级分行号] ,
[二级分行组]
end

SQL 2012 Group By Rollup, Grouping的更多相关文章

  1. oracle group by rollup,decode,grouping,nvl,nvl2,nullif,grouping_id,group_id,grouping sets,RATIO_TO

    干oracle 047文章12当问题,经验group by 声明.因此邂逅group by  rollup,decode,grouping,nvl,nvl2,nullif,RATIO_TO_REPOR ...

  2. SQL Server ->> GROUPING SETS, CUBE, ROLLUP, GROUPING, GROUPING_ID

    在我们制作报表的时候常常需要分组聚合.多组聚合和总合.如果通过另外的T-SQL语句来聚合难免性能太差.如果通过报表工具的聚合功能虽说比使用额外的T-SQL语句性能上要好很多,不过不够干脆,还是需要先生 ...

  3. Group By 多个分组集小结 --GROUPING SETS,GROUP BY CUBE,GROUP BY ROLLUP,GROUPING(),GROUPING_ID()

    T-SQL 多个分组集共有三种 GROUPING SETS, CUBE, 以及ROLLUP, 其中 CUBE和ROLLUP可以当做是GROUPING SETS的简写版 示例数据库下载: http:// ...

  4. oracle GROUP BY rollup

    1.ROW_NUMBER() OVER函数的基本用法用法 http://www.cnblogs.com/fxgachiever/archive/2010/09/15/1826792.html 2.De ...

  5. GROUP函数-GROUP_ID,GROUPING,GROUPING_ID

    GROUP_ID 首先我们看看官方的解释: 大意是GROUP_ID用于区分相同分组标准的分组统计结果. 解释起来比较抽象,下面我们来看看具体的案例. 例1:单一分组 SQL> select gr ...

  6. oracle group by rollup实现小计、合计

    SQL合计汇总实现数据N+1条显示: 注意group by rollup((ename, job, empno))!!! select decode(grouping(ename) + groupin ...

  7. SQL基础教程(第2版)第8章 SQL高级处理:8-2 GROUPING运算符

    第8章 SQL高级处理:8-2 GROUPING运算符 ■ GROUPING SETS——取得期望的积木● 只使用GROUP BY子句和聚合函数是无法同时得出小计和合计的.如果想要同时得到,可以使用G ...

  8. Oracle Group by+rollup+cube 的应用

    首先我们创建一个示例表: Create table test_group (v_name varchar2(4) ,v_size varchar2(4) ,v_color varchar2(4) ,n ...

  9. oracle按照指定列分组合计group by rollup()

    group by rollup() 按分组合计 select grouping(status),status,owner,object_type,count(*) from dba_objects w ...

随机推荐

  1. Thinking in java学习笔记之map的应用

    Random rand = new Random(47); Map<Integer,Integer> m = new HashMap<Integer,Integer>(); f ...

  2. Hadoop中pid文件存储

    我的hadoop集群部署在自己电脑虚拟机上,有时候我是挂起虚拟机,第二天再打开发现有些线程就挂了,比如namenode,好奇怪,当时看了一些帖子说是和pid存储有关,找到log看到找不到pid.因为基 ...

  3. Bzoj2154 Crash的数字表格 乘法逆元+莫比乌斯反演(TLE)

    题意:求sigma{lcm(i,j)},1<=i<=n,1<=j<=m 不妨令n<=m 首先把lcm(i,j)转成i*j/gcd(i,j) 正解不会...总之最后化出来的 ...

  4. .NET DateTime 显示格式

    备注     format 参数应包含单个格式说明符 (请参阅 标准日期和时间格式字符串) 或自定义格式模式 (请参阅 Cadenas con formato de fecha y hora pers ...

  5. oracle--知识点汇总2---laobai

    --复制表 create table emp as(select * from scott.emp); select * from emp; --Demo1创建存储过程,实现将emp表comm为空时, ...

  6. mate-desktop安装在其他目录时一些配置信息

    1.mate-desktop安装在其他目录时一些配置信息 2.BIN目录下添加相应的mate-session_gtk2/3 3.首先配置如下环境变量 #!/bin/sh if [[ "${E ...

  7. How to create vlan on Linux (with Cisco Catalyst Switch)

    In this article I want to share to you on how to create and configure vlan on Linux through Cisco Ca ...

  8. js中的逻辑与(&&)和逻辑或(||)

    之前有一个同事去面试,面试过程中碰到这样一个问题: 在js中写出如下的答案 : var a = 2; var b = 3; var andflag = a && b ; var orf ...

  9. MySql类似Oracle的dual虚拟表

    在mysql里也存在和oracle里类似的dual虚拟表:官方声明纯粹是为了满足select ... from...这一习惯问题,mysql会忽略对该表的引用. 你可千万注意了: select * f ...

  10. service和serviceImpl的选择

    同行中,有些同行公司的代码风格是service层=service接口+serviceImpl实现类: 而有的同行公司的代码风格是service层=service类: 为什么不一样呢? 以前没想过这个问 ...