原帖地址:
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 行)
--*/
分享到:
相关推荐
实现以下常用的内部排序算法并进行性能比较:"直接插入排序"," 折半插入排序"," 2—路插入排序"," 表插入排序"," 希尔排序"," 起泡排序"," 快速排序"," 简单选择排序"," 树形选择排序"," 堆排序"," 归并排序"," 链式...
#include ...typedef struct//数据类型定义 { Keytype key; }DataType; typedef struct//顺序表定义 { DataType data[MaxSize]; int length; }SqList; void InitList(SqList *L) { L->length=0; }
数据结构各种排序算法汇总,c++语言编写!希望对大家有帮助
1 如何将数据显示到 ListView。 2 如何对 ListView 中的数据进行求和,并显示到 ListView 上。 3 如何对 ListView 进行自定义排序,并且排序后始终保存合计的行在最下方。
排序算法汇总(选择排序 ,直接插入排序,冒泡排序,希尔排序,快速排序,堆排序)
该程序包含7大排序算法: # sort.bubbleSort() #冒泡排序 # sort.shellSort() #希尔排序 # sort.insertionSort() #插入排序 # sort.Selectionsort1() #选择排序 ...self.arr存放的是待排序列表,可改成自己的数据
数据结构各种排序方法汇总.docx
//快速排序 //***************************************************************************// //2011.09.28 //快速排序递归算法 #include #include int Slipt(int a[], int low, int high); void QuickSort...
数据结构中排序汇总,包括quicksort,heapsort,hoaresort等等
排序是对工作表中的数据进行重新组织安排的一种方式。Excel可以对整个工作表或选定的某个单元格区域进行排序。 在Excel中,可以对一列或多列中的数据按文本、数字以及日期和时间进行排序,还可以按自定义序列(如...
其中的数据要用随机数产生(如10000个),至少用5组不同的数据做比较,再使用各种算法对其进行排序,记录其排序时间,再汇总比较。 (3) 演示程序以人机对话的形式进行。每次测试完毕显示各种比较指标值的列表,比较...
待排序的元素好吗关键字为整数,其中的数据要用伪随机产生程序产生,至少用5组不同的输入数据作比较,要使用各种算法对其进行排序,记录排序时间、比较次数、交换次数,再汇总比较;演示程序以人机对话的形式进行,...
通过使用Jquery在客户端使用JS排序数据列表..................
(3)要求能够),对至少用5组不同的输入数据做比较,再使用各种算法对其进行排序,记录其排序时间,再汇总分析比较结果。(4)要求设计的算法实现代码给出详细的注释分析。(5)给出详细的算法实现流程图,在课程...
(1)用大根堆排序的基本思想 ① 先将初始文件R[1..n]建成一个大根堆,此堆为初始的无序区 ② 再将关键字最大的记录R[1](即堆顶)和无序区的最后一个记录R[n]交换,由此得到新的无序区R[1..n-1]和有序区R[n],且满足R...
里面包含了所有的排序算法,并且利用java语言来实现这些算法。很适合数据结构的学习者参考
汇总了数据结构中的排序算法 希望对大家有用