汇总后按汇总列由高到低排序的问题

louifox 2006-09-14 12:02:31
表1
ID 客户 销售额
1 a 100
2 a 200
3 b 100
4 c 150
5 c 300

表2
客户 地区
a 华东
b 东北
c 东北

需要生成如下的汇总表

客户 销售额

b 100
c 450
东北 550
a 300
华东 300
合计 850

这样的sql如何写?主要是排序不知道怎么搞
...全文
241 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangpei2008 2006-09-14
  • 打赏
  • 举报
回复
有幸看到二个高手在一起!
zjcxc 元老 2006-09-14
  • 打赏
  • 举报
回复
-- 加倒序
select
客户 = case when b.地区 is null then '合计' when b.客户 is not null then b.客户 else b.地区 end,
销售额 = sum(a.销售额)
from 表1 a, 表2 b
where a.客户 = b.客户
group by b.地区, b.客户 with rollup
order by grouping(b.地区), b.地区, grouping(b.客户),销售额 desc
playwarcraft 2006-09-14
  • 打赏
  • 举报
回复
這個問題太牛X了...
引來了這麼多的大鑽石!
pengdali 2006-09-14
  • 打赏
  • 举报
回复
select a.客户,a.销售额,c.sum_销售额 order1,b.地区 order2,0 order3 from 表1 a
join 表2 b on a.客户=b.客户
join (select b.地区,sum(a.销售额) sum_销售额,1 order2 from 表1 a join 表2 b on a.客户=b.客户 group by b.地区) c
on b.地区=c.地区
union all
select b.地区,sum(a.销售额),sum(a.销售额) order1,b.地区 order2,1 order3 from 表1 a join 表2 b on a.客户=b.客户 group by b.地区

union all
select '合计',sum(销售额),0 order1,'zzzzzzzzzzzzzzzzzzzz' order2,3 order3 from 表1

order by order1 desc,order2,order3
zjcxc 元老 2006-09-14
  • 打赏
  • 举报
回复

select
客户 = case when b.地区 is null then '合计' when b.客户 is not null then b.客户 else b.地区 end,
销售额 = sum(a.销售额)
from 表1 a, 表2 b
where a.客户 = b.客户
group by b.地区, b.客户 with rollup
pengdali 2006-09-14
  • 打赏
  • 举报
回复
select a.客户,a.销售额,c.sum_销售额 order1,b.地区 order2,0 order3 from 表1 a
join 表2 b on a.客户=b.客户
join (select b.地区,sum(a.销售额) sum_销售额,1 order2 from 表1 a join 表2 b on a.客户=b.客户 group by b.地区) c
on b.地区=c.地区
union all
select b.地区,sum(a.销售额),sum(a.销售额) order1,b.地区 order2,1 order3 from 表1 a join 表2 b on a.客户=b.客户 group by b.地区


order by order1 desc,order2
WangZWang 2006-09-14
  • 打赏
  • 举报
回复
--可以用如下
Select 客户,销售额 from (
Select 客户,销售额=sum(销售额) ,max(ID) as orID
from tab1 group by 客户
union
Select b.地区,销售额=sum(a.销售额), max(id) as orID
from tab1 as a,tab2 as b
where a.客户=b.客户 group by b.地区
union
Select '合计',销售额=sum(销售额),max(id)+1 as orID
from tab1 ) t order by orID,客户

--还有一种用ROLLUP 汇总
louifox 2006-09-14
  • 打赏
  • 举报
回复
order by grouping(b.地区), b.地区, grouping(b.客户),销售额 desc
这个排序我没看明白,能解释下么?
louifox 2006-09-14
  • 打赏
  • 举报
回复
这么多高手回复我的问题,真是感激涕零啊,先消化一下。
fcuandy 2006-09-14
  • 打赏
  • 举报
回复
...

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧