求汇总排序更简单的写法
一个表#t1
shop, type,year,seas,quty
店铺1 往季 2005 春季 50
店铺1 往季 2005 秋季 50
店铺1 往季 2004 秋季 50
店铺1 往季 2003 秋季 50
店铺1 当季 2005 冬季 50
店铺2 当季 2005 冬季 50
.....
汇总结果
店铺1 往季 2005 春季 50
店铺1 往季 2005 秋季 50
店铺1 往季 2005小计 100
店铺1 往季 2004 秋季 50
店铺1 往季 2004小计 50
店铺1 往季 2003 秋季 50
店铺1 往季 2003小计 50
店铺1 往季小计 200
店铺1 当季 2005 冬季 50
店铺1 当季 2005小计 50
店铺1合计 250
店铺2......
我的写法是用3个游标,分别将店铺、类别,年份的汇总按序插入临时表中,
最后输出临时表
觉得这样做,代码较长,有无简单的方法呢。
问题点数:20、回复次数:6Top
1 楼wgsasd311(自强不息)回复于 2005-12-01 16:45:54 得分 3
select * from (
select * from tb
union all
select shop,type,year,'小计',sum(quty) from tb group by shop,type,year) a
order by shopTop
2 楼lsp69(浪子神剑)回复于 2005-12-01 16:59:42 得分 2
select * from (
select * from tb
union all
select shop,type,year,'小计',sum(quty) from tb group by shop,type,year) a
order by shop
正解Top
3 楼shien(shien)回复于 2005-12-01 17:54:23 得分 0
不行啊,排序不对,小计都跑到下面去了Top
4 楼shien(shien)回复于 2005-12-01 17:57:47 得分 0
楼上的结果是
店铺 当季 2005 冬
店铺 当季 2005 春
店铺 当季 2005 夏
店铺 当季 2005 小计
店铺 过季 1999 小计
店铺 过季 2000 小计
....
店铺 过季 1999 秋季
店铺 过季 2000 春季
.....Top
5 楼gaojie001(高洁)回复于 2005-12-01 19:38:47 得分 0
aaTop
6 楼qiqingshizhe(凄清使者)回复于 2005-12-01 21:34:38 得分 15
select shop,type,year,seas,quty
from(
select shop,type,year,seas,quty=sum(quty),s1=0,s2=0
from t1
group by shop,type,year,seas
union all
select shop,type,year+'小計','',quty=sum(quty),s1=0,s2=1
from t1
group by shop,type,year
union all
select shop,type+'小計','','',quty=sum(quty),s1=0,s2=0
from t1
group by shop,type
union all
select shop+'閤計','','','',quty=sum(quty),s1=1,s2=0
from t1
group by shop
)a
order by substring(shop,3,1),s1,charindex(left(type,2),'往季,當季'),
left(year,4) desc,s2,charindex(seas,'春季,夏季,鞦季,鼕季')
Top




