问下grouping 函数用法 ?

billwindows 2008-10-14 04:30:43
如果有一个 表 R 字段如下
stat_time province_id province_name city_id city_name user_num

表 D

city_id,city_orderid



我要在 R 表中查询 stat_time,city_name 关联 D表 按照 stat_time asc,city_orderid asc, city_name asc 排序

显示的结果如下

2008-10-10 沈阳 10
2008-10-10 大连 11
2008-10-10 全省小计 21

显示这种样式,如何实现 ?
我写的 sql 是
select stat_time, case when grouping(city_name) = 1
then '全省小计'
else city_name,
sum(user_num)
from R 这样可以出来上面的结果 ,但如果按照 D 表的 city_id 进行关联,city_orderid 先升序,我就迷糊了,不知道怎么写了,哪个高手赐教下? 谢谢


...全文
462 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
billwindows 2008-10-21
  • 打赏
  • 举报
回复
不好意思,那个问题早就解决了,只是一直没时间结贴,确实应该这么写,只需要做 外连接就成了,呵呵
leiru 2008-10-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wiler 的回复:]
select a.stat_time,a.city_name,a.user_num from (
select stat_time, case when grouping(city_name) = 1
then '全省小计'
else city_name
end city_name,
sum(user_num) user_num
from R
group by stat_time,rollup(city_name)
) a,city b
where a.city_name=b.city_name
group by b.city_orderid
[/Quote]
支持楼上的
wiler 2008-10-15
  • 打赏
  • 举报
回复
select a.stat_time,a.city_name,a.user_num from (
select stat_time, case when grouping(city_name) = 1
then '全省小计'
else city_name
end city_name,
sum(user_num) user_num
from R
group by stat_time,rollup(city_name)
) a,city b
where a.city_name=b.city_name
group by b.city_orderid
billwindows 2008-10-14
  • 打赏
  • 举报
回复
因为用户需求比较变态,比如说 ,是江苏省,就必须要按照 人家想的 进行显示,不能直接 按照 city_name进行asc ,必须先 按照我们先自己定的 city_orderid 升序在排 city_name ,但一把city_orderid 加进来 在group by 数据就全乱了,无语撒
billwindows 2008-10-14
  • 打赏
  • 举报
回复
上面的 sql 写错 ,原需求字段较多,我随便举的例子

sql :

select stat_time, case when grouping(city_name) = 1
then '全省小计'
else city_name
end city_name,
sum(user_num)
from R
group by stat_time,rollup(city_name)
cosio 2008-10-14
  • 打赏
  • 举报
回复
rollup

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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