这样的报表,单一SQL能不能实现?

[复制链接]
查看11 | 回复5 | 2007-2-1 19:46:22 | 显示全部楼层 |阅读模式
帮我分析下。给个思路就行!

报表如下。

采购排序:5位
公司名 年总额
公司1
47
公司2
45
公司3
40
公司4
32
公司5
30
其他 120
机能如下:
1。采购排序,是从画面的指定,是动态的,按照年总额降序显示前几个
2。公司名是其他的年总额是其他的公司的sum
回复

使用道具 举报

千问 | 2007-2-1 19:46:22 | 显示全部楼层
比较容易想到的是用union
回复

使用道具 举报

千问 | 2007-2-1 19:46:22 | 显示全部楼层
不用union的话,也可以,就是需要几层sql
先用group by 把各公司和求出来
然后用row_number() over生成按年总额的排名
然后用casewhen根据排名重新生成排名,再SUM
回复

使用道具 举报

千问 | 2007-2-1 19:46:22 | 显示全部楼层
应该可以
回复

使用道具 举报

千问 | 2007-2-1 19:46:22 | 显示全部楼层
select name,sum(money) as money
from (
select money,case when row_number()

over(order by money desc) < 6 -----< 显示前五个

then name

else '其它' end as name

from 表表表表表
)
group by name
order by decode(name,'其它',2,1),money desc
回复

使用道具 举报

千问 | 2007-2-1 19:46:22 | 显示全部楼层
谢了!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行