|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
采用DBaaS解决方案,他们也可以使用同大企业一样的技术。在大型组织中,DBaaS可以提供部门级解决MySQL学习教程,而无需IT部门和采购部门的介入,提供更快和更容易的方法来实现小型解决方案。排序|数据
原帖地点:
http://community.csdn.net/Expert/topic/3317/3317231.xml?temp=.7252313
程序选择了:项目称号,项目年度,地市,请求单元,撑持金额这几个字段
个中汇总字段为项目年度,地市
查询了局列就要按必要项目称号,项目年度,地市,请求单元,撑持金额分列好
并能按指定的字段举行排序处置
请求天生的了局:
=================================================================
序号项目称号项目年度地市请求单元撑持金额
1称号12004省直1公司100
2称号22004省直2公司100
32004省直算计200
4称号32004石家庄3公司100
52004石家庄算计100
62004算计300
7称号32005石家庄3公司100
82005石家庄算计100
92005算计100
10总计400
=================================================================
------------------------------------------------------------------------------------
--假定以下一时表是经由第一次汇总+排序处置失掉的(第一次处置不处置小计,总计等)
createtable#t(项目称号varchar(10),项目年度varchar(10),地市varchar(10),请求单元varchar(10),撑持金额int)
insert#tselect称号1,2004,省直,1公司,400
unionallselect称号2,2004,省直,2公司,300
unionallselect称号3,2004,石家庄,3公司,200
unionallselect称号3,2005,石家庄,3公司,100
go
--上面是处置
select项目称号,项目年度,地市,请求单元,撑持金额
from(--这是完成汇总的部分(不思索小计,总计处置部分的汇总)
select*
,s1=0,s2=项目年度,s3=0,s4=地市,s5=0,s6=请求单元,s7=0--这是排序必要的
from#t
unionall
--这是完成汇总的小计,总计部分
select项目称号=case
whengrouping(项目年度)=1then总计
elseend
,项目年度=case
whengrouping(项目年度)=0
andgrouping(地市)=1
then项目年度+算计
elseend
,地市=case
whengrouping(项目年度)=0
andgrouping(地市)=0
andgrouping(请求单元)=1
then地市+算计
elseend
,请求单元=case
whengrouping(请求单元)=0then请求单元+算计
elseend
,撑持金额=sum(撑持金额)
,grouping(项目年度),项目年度--这里及上面的是排序必要的
,grouping(地市),地市
,grouping(请求单元),请求单元
,grouping(请求单元)+1
from#t
groupby项目年度,地市,请求单元withrollup--这是要天生小计,总计的分组字段
)a
orderbys1,s2,s3,s4,s5,s6,s7,撑持金额--s1~s6是避免小计,总计排序庞杂必要的,前面的撑持金额是其他排序必要的
go
--删除测试的一时表
droptable#t
/*--测试了局
项目称号项目年度地市请求单元撑持金额
---------------------------------------------------------------
称号12004省直1公司400
1公司算计400
称号22004省直2公司300
2公司算计300
省直算计700
称号32004石家庄3公司200
3公司算计200
石家庄算计200
2004算计900
称号32005石家庄3公司100
3公司算计100
石家庄算计100
2005算计100
总计1000
(所影响的行数为14行)
--*/
--下面是按项目年度,地市,请求单元做小计,总计的
--上面是只按项目年度,地市做小计,总计的,对照一下,更简单看出纪律
--上面是处置
select项目称号,项目年度,地市,请求单元,撑持金额
from(--这是完成汇总的部分(不思索小计,总计处置部分的汇总)
select*
,s1=0,s2=项目年度,s3=0,s4=地市,s5=0--这是排序必要的
from#t
unionall
--这是完成汇总的小计,总计部分
select项目称号=case
whengrouping(项目年度)=1then总计
elseend
,项目年度=case
whengrouping(项目年度)=0
andgrouping(地市)=1
then项目年度+算计
elseend
,地市=case
whengrouping(地市)=0
then地市+算计
elseend
,
,撑持金额=sum(撑持金额)
,grouping(项目年度),项目年度--这里及上面的是排序必要的
,grouping(地市),地市
,grouping(地市)+1
from#t
groupby项目年度,地市withrollup--这是要天生小计,总计的分组字段
)a
orderbys1,s2,s3,s4,s5,撑持金额--s1~s6是避免小计,总计排序庞杂必要的,前面的撑持金额是其他排序必要的
/*--测试了局
项目称号项目年度地市请求单元撑持金额
-----------------------------------------------------------
称号22004省直2公司300
称号12004省直1公司400
省直算计700
称号32004石家庄3公司200
石家庄算计200
2004算计900
称号32005石家庄3公司100
石家庄算计100
2005算计100
总计1000
(所影响的行数为10行)
--*/
由于在MySQL中有如此众多的额外功能可选,诸如存储引擎等,你可以选择最适合你公司的一个,或者尝试选用多个引擎。MySQL开始非常小巧,但是可以随着公司的成长而不断地变强大。 |
|