原帖地址:
http://community.csdn.net/Expert/topic/3317/3317231.xml?temp=.7252313
程序选择了: 项目名称,项目年度,地市,申请单位,支持金额这几个字段
其中汇总字段为项目年度,地市
查询结果列就要按需要项目名称,项目年度,地市,申请单位,支持金额排列好
并能按指定的字段进行排序处理
要求生成的结果:
=================================================================
序号 项目名称 项目年度 地市 申请单位 支持金额
1 名称1 2004 省直 1公司 100
2 名称2 2004 省直 2公司 100
3 2004 省直合计 200
4 名称3 2004 石家庄 3公司 100
5 2004 石家庄合计 100
6 2004合计 300
7 名称3 2005 石家庄 3公司 100
8 2005 石家庄合计 100
9 2005合计 100
10 总计 400
=================================================================
------------------------------------------------------------------------------------
--假设如下临时表是经过第一次汇总+排序处理得到的(第一次处理不处理小计,总计等)
create table #t(项目名称 varchar(10),项目年度 varchar(10),地市 varchar(10),申请单位 varchar(10),支持金额 int)
insert #t select '名称1','2004','省直' ,'1公司',400
union all select '名称2','2004','省直' ,'2公司',300
union all select '名称3','2004','石家庄','3公司',200
union all select '名称3','2005','石家庄','3公司',100
go
--下面是处理
select 项目名称,项目年度,地市,申请单位,支持金额
from( --这是实现汇总的部分(不考虑小计,总计处理部分的汇总)
select *
,s1=0,s2=项目年度,s3=0,s4=地市,s5=0,s6=申请单位,s7=0 --这是排序需要的
from #t
union all
--这是实现汇总的小计,总计部分
select 项目名称=case
when grouping(项目年度)=1 then '总计'
else '' end
,项目年度=case
when grouping(项目年度)=0
and grouping(地市)=1
then 项目年度+'合计'
else '' end
,地市=case
when grouping(项目年度)=0
and grouping(地市)=0
and grouping(申请单位)=1
then 地市+'合计'
else '' end
,申请单位=case
when grouping(申请单位)=0 then 申请单位+'合计'
else '' end
,支持金额=sum(支持金额)
,grouping(项目年度),项目年度 --这里及下面的是排序需要的
,grouping(地市),地市
,grouping(申请单位),申请单位
,grouping(申请单位)+1
from #t
group by 项目年度,地市,申请单位 with rollup --这是要生成小计,总计的分组字段
)a
order by s1,s2,s3,s4,s5,s6,s7,支持金额 --s1~s6是防止小计,总计排序错乱需要的,后面的支持金额是其他排序需要的
go
--删除测试的临时表
drop table #t
/*--测试结果
项目名称 项目年度 地市 申请单位 支持金额
---------- -------------- -------------- -------------- -----------
名称1 2004 省直 1公司 400
1公司合计 400
名称2 2004 省直 2公司 300
2公司合计 300
省直合计 700
名称3 2004 石家庄 3公司 200
3公司合计 200
石家庄合计 200
2004合计 900
名称3 2005 石家庄 3公司 100
3公司合计 100
石家庄合计 100
2005合计 100
总计 1000
(所影响的行数为 14 行)
--*/
--上面是按项目年度,地市,申请单位做小计,总计的
--下面是只按项目年度,地市做小计,总计的,比较一下,更容易看出规律
--下面是处理
select 项目名称,项目年度,地市,申请单位,支持金额
from( --这是实现汇总的部分(不考虑小计,总计处理部分的汇总)
select *
,s1=0,s2=项目年度,s3=0,s4=地市,s5=0 --这是排序需要的
from #t
union all
--这是实现汇总的小计,总计部分
select 项目名称=case
when grouping(项目年度)=1 then '总计'
else '' end
,项目年度=case
when grouping(项目年度)=0
and grouping(地市)=1
then 项目年度+'合计'
else '' end
,地市=case
when grouping(地市)=0
then 地市+'合计'
else '' end
,''
,支持金额=sum(支持金额)
,grouping(项目年度),项目年度 --这里及下面的是排序需要的
,grouping(地市),地市
,grouping(地市)+1
from #t
group by 项目年度,地市 with rollup --这是要生成小计,总计的分组字段
)a
order by s1,s2,s3,s4,s5,支持金额 --s1~s6是防止小计,总计排序错乱需要的,后面的支持金额是其他排序需要的
/*--测试结果
项目名称 项目年度 地市 申请单位 支持金额
---------- -------------- -------------- ---------- -----------
名称2 2004 省直 2公司 300
名称1 2004 省直 1公司 400
省直合计 700
名称3 2004 石家庄 3公司 200
石家庄合计 200
2004合计 900
名称3 2005 石家庄 3公司 100
石家庄合计 100
2005合计 100
总计 1000
(所影响的行数为 10 行)
--*/
分享到:
相关推荐
根据给定的文件信息,我们可以总结出以下几个关键的数据结构与排序算法的知识点: ### 一、数据类型定义 首先,程序定义了一些基本的数据类型和结构体。这些定义为后续的操作提供了必要的基础。 #### 1.1 基本...
实现以下常用的内部排序算法并进行性能比较:"直接插入排序"," 折半插入排序"," 2—路插入排序"," 表插入排序"," 希尔排序"," 起泡排序"," 快速排序"," 简单选择排序"," 树形选择排序"," 堆排序"," 归并排序"," 链式...
这两种算法都是在计算机科学中广泛使用的高效排序方法,尤其在处理大量数据时表现优秀。 首先,我们来看看快速排序。快速排序是一种基于分治策略的排序算法,由英国计算机科学家C.A.R. Hoare于1960年提出。它的基本...
排序算法汇总(选择排序、直接插入排序、冒泡排序、希尔排序、快速排序、堆排序) 本资源介绍了六种常用的排序算法:选择排序、直接插入排序、冒泡排序、希尔排序、快速排序和堆排序。下面对每种算法进行详细介绍:...
算法的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序)。 #### C++代码实现 ```cpp ...
1 如何将数据显示到 ListView。 2 如何对 ListView 中的数据进行求和,并显示到 ListView 上。 3 如何对 ListView 进行自定义排序,并且排序后始终保存合计的行在最下方。
在客户端使用JavaScript(JS)对数据列表进行排序是一种常见的需求,尤其在网页应用中,它能够提高用户体验,因为用户无需等待服务器响应即可看到实时更新的排序结果。在本篇文章中,我们将深入探讨如何利用JQuery库...
数据结构中的排序方法是计算机科学中的重要概念,用于组织和整理数据,提高数据处理效率。以下是对几种常见的排序算法的详细解释: 1. 直接插入排序 直接插入排序是一种简单直观的排序算法,它的工作原理是通过构建...
排序可以帮助我们更好地理解和分析数据,例如,通过排序可以快速找到最大值或最小值,也可以为后续的数据处理步骤提供有序的数据。 ### 二、Hadoop MapReduce #### 1. Hadoop简介 Hadoop是一个开源框架,用于...
在Java编程语言中,排序是数据处理中非常基础且重要的操作。本文将全面解析Java中的各种排序算法,帮助你理解并掌握它们的核心概念、实现方式以及适用场景。 1. 冒泡排序(Bubble Sort) 冒泡排序是最简单的排序...
在计算机科学中,数据结构是组织和存储数据的方式,而排序是数据处理中的一项基本操作。排序是指将一组数据按照特定的顺序排列的过程。本文将对几种常见的排序算法进行总结,并提供相应的代码实现。 首先,冒泡排序...
该程序包含7大排序算法: # sort.bubbleSort() #冒泡排序 # sort.shellSort() #希尔排序 # sort.insertionSort() #插入排序 # sort.Selectionsort1() #选择排序 ...self.arr存放的是待排序列表,可改成自己的数据
Excel 排序、筛选、分类汇总和数据透视表的应用技巧 Excel 排序技巧: * 简单排序:升序、降序、空格总是排在最后 * 多关键字排序:可以根据多个字段进行排序 * 自定义排序:可以根据用户定义的顺序进行排序,需要...
在处理大量数据时,我们可能需要对数据进行各种操作,例如分类、求和、汇总以及排序。以下是对"DataTable分类求和,分类汇总,排序"这个主题的详细解析。 1. **DataTable的Compute方法**: DataTable的Compute方法...
插入排序是一种简单的排序算法,它的工作方式是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 1. **初始化**:假设数组的第一个元素已经排好序。 2. **遍历数组**:从第二...
本篇文章将详细介绍《JAVA 排序汇总 数据结构所有排序算法的Java实现》文件中提到的各种排序算法及其Java实现方式。 #### 二、排序算法分类 文件中提到了五种主要的排序算法分类: 1. **插入排序**:包括直接插入...
排序是对工作表中的数据进行重新组织安排的一种方式。Excel可以对整个工作表或选定的某个单元格区域进行排序。 在Excel中,可以对一列或多列中的数据按文本、数字以及日期和时间进行排序,还可以按自定义序列(如...
其中的数据要用随机数产生(如10000个),至少用5组不同的数据做比较,再使用各种算法对其进行排序,记录其排序时间,再汇总比较。 (3) 演示程序以人机对话的形式进行。每次测试完毕显示各种比较指标值的列表,比较...
这里我们汇总了七种常见的排序算法:Shell排序、归并排序、选择排序、快速排序、堆排序、冒泡排序和插入排序。每种算法都有其独特的特点和适用场景,下面将逐一详细介绍。 1. **Shell排序**:由Donald Shell提出,...