rollup之後怎麽使用order by?

yuekai 2004-08-26 09:16:37
sql語句:

SELECT c1,c2,c3,c4,c5 FROM table
GROUP by c1,c2,c3,c4,c5
WITH ROLLUP HAVING c1 IS NOT NULL
ORDER BY c5,c4

這樣group 之後匯總的欄位都被order by到了後面,
如何才能保留rollup的樣子並且除了匯總的欄位都
按c5,c4排列。
...全文
353 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2004-08-27
  • 打赏
  • 举报
回复
看看上面这个示例是否理解了你的问题
zjcxc 元老 2004-08-27
  • 打赏
  • 举报
回复
--测试数据
declare @t table(a int,b int,c int)
insert @t select 1,9,10
union all select 1,8,10
union all select 1,7,10
union all select 2,6,10
union all select 2,5,10
union all select 2,4,10
union all select 3,1,10
union all select 3,2,10
union all select 3,3,10

--查询
select a,b,c=sum(c)
from @t
group by a,b with rollup
order by grouping(a),a --楼主看看不加排序与加排序的区别
,grouping(b),b desc

/*--测试结果

a b c
----------- ----------- -----------
1 9 10
1 8 10
1 7 10
1 NULL 30
2 6 10
2 5 10
2 4 10
2 NULL 30
3 3 10
3 2 10
3 1 10
3 NULL 30
NULL NULL 90

(所影响的行数为 13 行)
--*/
yuekai 2004-08-27
  • 打赏
  • 举报
回复
這個是 説明用的數據,真實的數據不時這個樣子的,直接按c3排不能達到這個效果
yuekai 2004-08-27
  • 打赏
  • 举报
回复
老大的方法正好!
yjdn 2004-08-26
  • 打赏
  • 举报
回复
--测试
select * from table order by c3 --只是照c3排序就达到效果了

--结果

c1 c2 c3
1 1 1
2 2 2
a null 3
3 3 3
5 5 5
7 7 7
11 11 11
a null 26
yjdn 2004-08-26
  • 打赏
  • 举报
回复
你可以先order by c3,c1,c2就可以达到你要的效果
由于没有你的全表,我只是拿你的结果数据来测试
bobe2004 2004-08-26
  • 打赏
  • 举报
回复
是阿
搂主说的不是很明白!
问题值得关注!
我帮忙顶一下!
yuekai 2004-08-26
  • 打赏
  • 举报
回复
得到的結果集合是這個樣子。注a為統計列rollup的統計sum(c3)
c1 c2 c3
2 2 2
1 1 1
a 3
3 3 3
7 7 7
5 5 5
11 11 11
a 26

使用order by c1后變成
c1 c2 c3
1 1 1
2 2 2
3 3 3
5 5 5
7 7 7
11 11 11
a 3
a 26
統計列被排序到了後面
希望得到的結果集是
c1 c2 c3
1 1 1
2 2 2
a 3
3 3 3
5 5 5
7 7 7
11 11 11
a 26

不知道能不能看懂?
yjdn 2004-08-26
  • 打赏
  • 举报
回复
给出数据测试一下
表数据和
达到的效果

如果是顺序问题,可以加一个desc,不是很明白楼主的意思
SELECT c1,c2,c3,c4,c5 FROM table
GROUP by c1,c2,c3,c4,c5
WITH ROLLUP HAVING c1 IS NOT NULL
ORDER BY c5,c4 desc
yuekai 2004-08-26
  • 打赏
  • 举报
回复
沒人理我,有沒有高手指點一下阿?

34,575

社区成员

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

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