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. u盘安装系统教程详解

    一.准备阶段 提前准备一个至少1G或以上的u盘,方便好用. 1.制作u盘启动工具 (1)工具下载,推荐IT天空的优启通 下载地址:https://www.itiankong.net/thread-37 ...

  2. python异常处理

    1. 异常 (1) 异常处理 #没有异常处理 num = int('abc') print(num) #报错 #异常处理 try: num = int('abc') #try里的代码是受保护的 pri ...

  3. WebService返回DataTable

    http://blog.csdn.net/wxnjob/article/details/8638420 webservice返回datatable时报序列化错误 以下三种方案的实质应该都是序列化的,有 ...

  4. PHP5.6启动失败

    PHP编译安装完毕,启动失败,提示 1 [23-Jun-2014 12:27:02] ERROR: failed to open configuration file '/usr/local/php/ ...

  5. 精选9个值得学习的 HTML5 效果【附源码】

    这里精选了一组很酷的 HTML5 效果.HTML5 是现 Web 开发领域的热点, 拥有很多让人期待已久的新特性,特别是在移动端,Web 开发人员可以借助 HTML5 强大功能轻松制作各种交互性强.效 ...

  6. spring mvc+mybatis+sql server简单配置

    context.xml配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&qu ...

  7. .net WebServer例

    新建.asmx页面 using System; using System.Collections.Generic; using System.Linq; using System.Web; using ...

  8. css content 的 attr 用法 (实现悬浮提示)

    content 的attr 实现 鼠标悬浮 显示 悬浮提示, content 属性与 :before 及 :after 伪元素配合使用,来插入生成内容. 方法/步骤 1 <div> < ...

  9. Metro下读取txt文件

    情况1:txt是Utf8格式的. 读取代码:IList<String> lines = await Windows.Storage.FileIO.ReadLinesAsync(file); ...

  10. 页面位置 top、postop、scrolltop、offsetTop、scrollHeight、offsetHeight、clientHe

    1.top 此属性仅仅在对象的定位(position)属性被设置时可用.否则,此属性设置会被忽略. 代码如下: <div style=" position:absolute; widt ...