是否可以用cube或者rollup来进行呢?

止水i 2016-01-08 09:14:53

这是我的语句跟结果。我刚刚找了下cube与rollup的用法 我都看了下 他们基本上是用在select 没有被函数覆盖的例上的(例如 select 姓名 部门 sum(工资) 然后cube的话只能 cube跟姓名和部门 而不能再次cube工资) ,现在我想用cube或者rollup的方法同样得出我这张表这样的结果可以吗,重要的是那成本金额与售价金额的总计? 如果行的话可以告诉我嘛? 我会仔细看一看的。
这是我的语句
select rownum as 讨厌人的序号 ,xx.* from
(select
b.名称 as 药品名称 ,
b.规格 as 药品规格 ,
b.药库单位,
sum(a.实际数量)/b.药库包装 as 啊啊啊药库名不要重复,
a.批号,
avg(a.成本价) as 成本平均价,
avg(a.零售价) as 售价平均价,
sum(a.成本金额),
sum(a.零售金额) as 售价金额,
sum(a.差价),c.名称
from 药品收发记录 a,药品目录 b,部门表 c
where
a.药品id = b.药品id
and a.库房id = c.id
and a.单据 = 1
and a.审核日期 between to_date ( '2015/01/22', 'YYYY-MM-DD') and to_date ('2015/12/31','YYYY-MM-DD')
group by b.名称 ,b.规格 ,b.药库单位,a.批号,c.名称,b.药库包装

union all

select
'【合计】' ,'' ,'',null,
null,null,null,sum(a.成本金额),sum(a.零售金额) as 售价金额,sum(a.差价),''
from 药品收发记录 a,药品目录 b,部门表 c
where a.药品id = b.药品id and a.库房id = c.id and a.单据 = 1
and a.审核日期 between to_date ( '2015/01/22', 'YYYY-MM-DD') and to_date ('2015/12/31','YYYY-MM-DD'))xx
...全文
86 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
bw555 2016-01-11
  • 打赏
  • 举报
回复
可以考虑使用,不过要对group进行下处理,把几个group的字段连接在一起
group by  rollup(b.名称||b.规格||b.药库单位||a.批号||c.名称||b.药库包装)

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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