国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

數據匯總加排序

2024-07-21 02:07:33
字體:
來源:轉載
供稿:網友

原帖地址:
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 行)
--*/

--上面是按項目年度,地市,申請單位做小計,總計的
--下面是只按項目年度,地市做小計,總計的,比較一下,更容易看出規(guī)律
--下面是處理
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 行)

--*/

商業(yè)源碼熱門下載www.html.org.cn

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 且末县| 长顺县| 定州市| 长治县| 炎陵县| 即墨市| 库车县| 南丹县| 高平市| 兴化市| 文昌市| 谢通门县| 法库县| 崇义县| 竹北市| 神池县| 古交市| 陵水| 玉门市| 大英县| 闽侯县| 教育| 桃园县| 东安县| 沭阳县| 合川市| 扎赉特旗| 湘潭县| 双流县| 连山| 通山县| 仁怀市| 出国| 谢通门县| 宁远县| 全椒县| 镇安县| 樟树市| 土默特左旗| 安溪县| 合川市|