首页 新闻 搜索 专区 学院

关于SQL统计问题

0
悬赏园豆:5 [待解决问题]
 料号  序号  币制  品名  数量
 AA  1  USD  XXXX  1
 TOTAl(根据币制)        1
 AA  1  RMB  XXXX  2
TOTAL(序号)        3
BB  2  RMB  XXXX  2
 TOTAl(根据币制)        2
TOTAL(序号)        2
TOTAL(合计)       5

 请教大神们,怎么写这个sql

描述:这张表,首先根据【币制】进行统计,然后在根据【序号】进行统计。最后整个数据合计。

请问这个sql怎么写!!

一缕秋丝的主页 一缕秋丝 | 初学一级 | 园豆:3
提问于:2014-04-18 11:57
< >
分享
所有回答(2)
0

case when

醉低调 | 园豆:128 (初学一级) | 2014-04-18 16:07
0

可以分别产生按币种汇总的临时表,和按序号汇总的临时表,再和原表一起union

加以特别处理的排序规则即可

with cte_i
as
(
select 料号,序号,币制,1 as i_level,数量
from table
)
,cte_a
as
(
select 料号,序号,币制,2 as i_level,sum(数量) as 数量
from table
group by 料号,序号,币制
)
,cte_b
as
(
select 料号,序号,'序号total' as 币制,3 as i_level,sum(数量) as 数量
from table
group by 料号,序号
)
,cte_c
as
(
select '' as 料号,99999999 as 序号,'' as 币制,4 as i_level sum(数量) as 数量
)

select * from cte_i
union all select * from cte_a
union all select * from cte_b
union all select * from cte_c
order by 
    case when 料号 = '' then 2 else 1 end,
    料号,
    case when 序号 = '序号total' then 2 else 1 end,
    序号,币制,i_level
AlphaQcode | 园豆:251 (菜鸟二级) | 2014-05-27 11:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册