假设有一个公司表Company,表结构如下:
--------------------------------------
CompanyCode:公司代码
CompanyName:公司名称
IndustryCode:所在行业代码
IndustryName:所在行业名称
-------------------------------------另外有一个公司销售额表Sale,表结构如下:
---------------------------------------
CompanyCode: 公司代码
Sale: 月度销售额
Date: 月度
---------------------------------------我现在要列出每一个公司在它所在行业的销售额排名,如果该行业有的公司在销售额表找不到,仅列出该公司,不做排名处。怎么写这个SQL语句?例如,结果可能是这样:
----------------------------------------
排名 公司代码 销售额 行业代码
Order CompanyCode Sale IndustryCode
1 001 19 G001
2 002 15 G001
3 019 13 G001
4 035 8 G001
5 036 - G001
6 078 - G001
1 100 239 A001
2 198 155 A001
3 200 120 A001
4 317 118 A001
5 429 100 A001
6 500 - A001
7 600 - A001
--------------------------------------
CompanyCode:公司代码
CompanyName:公司名称
IndustryCode:所在行业代码
IndustryName:所在行业名称
-------------------------------------另外有一个公司销售额表Sale,表结构如下:
---------------------------------------
CompanyCode: 公司代码
Sale: 月度销售额
Date: 月度
---------------------------------------我现在要列出每一个公司在它所在行业的销售额排名,如果该行业有的公司在销售额表找不到,仅列出该公司,不做排名处。怎么写这个SQL语句?例如,结果可能是这样:
----------------------------------------
排名 公司代码 销售额 行业代码
Order CompanyCode Sale IndustryCode
1 001 19 G001
2 002 15 G001
3 019 13 G001
4 035 8 G001
5 036 - G001
6 078 - G001
1 100 239 A001
2 198 155 A001
3 200 120 A001
4 317 118 A001
5 429 100 A001
6 500 - A001
7 600 - A001
解决方案 »
- 菜鸟求助
- 求助:关于Oracle数据库,急!!!
- 数据插入 不同用户plsql
- 关于update orderby 语句 问题
- 请教一个oracle查询语句
- 如何实现自增长类型?
- 如何更改表名?
- 服务器突然断电后,oracle8i的sql/plus 不能用connect连上,错误是ora-01034:oracle not available,但是有关oracle的服务都能正常启动
- 求 Oracle9i for solaris x86 的下在地址,急用!!!
- 有一个字段名为select,如果将sql语句在Oracle中使用啊,我试过[]、""和''都不行
- sql语句问题
- oracle 中的模式指什么阿??
select rwo_number() over(partition by t.IndustryCode order by t.sale ) order,t.CompanyCode,t.sale,t.IndustryCode
(select a.CompanyCode,decode(s.sale,null,'-',to_char(s.sale)) sale,a.IndustryCode
from
Company a,
(select CompanyCode,sum(sale) sale
from sale
group by CompanyCode) s
where a.CompanyCode=s.CompanyCode(+)) t
group by t.CompanyCode,t.sale,t.IndustryCode
select rwo_number() over(partition by t.IndustryCode order by t.sale ) order,t.CompanyCode,t.sale,t.IndustryCode
(select a.CompanyCode,decode(s.sale,null,'-',to_char(s.sale)) sale,a.IndustryCode
from
Company a,
(select CompanyCode,sum(sale) sale
from sale
group by CompanyCode) s
where a.CompanyCode=s.CompanyCode(+)) t
order by t.IndustryCode deac,order
select rwo_number() over(partition by t.IndustryCode order by t.sale ) order,t.CompanyCode,t.sale,t.IndustryCodefrom(select a.CompanyCode,decode(s.sale,null,'-',to_char(s.sale)) sale,a.IndustryCode
from
Company a,
(select CompanyCode,sum(sale) sale
from sale
group by CompanyCode) s
where a.CompanyCode=s.CompanyCode(+)) torder by t.IndustryCode deac,order
ROW_NUMBER() OVER()只是楼上太激动,把ROW_NUMBER()写成RWO_NUMBER()
ROW_NUMBER() OVER()只是楼上太激动,把ROW_NUMBER()写成RWO_NUMBER()
===========================================是啊看到有分可以抢,ROW都写错了
a.COMPANYCODE,decode(b.sale,null,'-',to_char(b.sale)) sale,a.INDUSTRYCODE
from scott.company a left outer join
(
select CompanyCode,sum(sale) sale
from scott.sale
group by CompanyCode
) b
on a.COMPANYCODE=b.CompanyCode这样就可以实现无销售记录的公司不做排名了