select m.spbs,sum(m.xssl) from jcdms_lsxsqdb m,bm_jbxxk j
where trunc(xssj)>=to_date('2003-05-10','yyyy-mm-dd')
and trunc(xssj)<=to_date('2003-05-15','yyyy-mm-dd')
and m.spbs=j.spbs and rownum<=5
order by 2 desc
好象多了一个列名,并且排序时,我觉得用列索引要好一些
where trunc(xssj)>=to_date('2003-05-10','yyyy-mm-dd')
and trunc(xssj)<=to_date('2003-05-15','yyyy-mm-dd')
and m.spbs=j.spbs and rownum<=5
order by 2 desc
好象多了一个列名,并且排序时,我觉得用列索引要好一些
解决方案 »
- LIBTUX_CAT:607: ERROR: Cannot open section _MACHINES_SECT of the TUXCONFIG: -1
- 我今天第一次接触Oracle,刚装的Oracle,给位高手帮帮我吧!!!!
- 两张表拼接
- oralce8导出的dmp文件怎么导入到oracle9i里面阿?
- oracle设置参数问题
- 求高人帮忙,我自己写的一个过程,它总是提示编译错误
- 网络状况正常,从外网访问Oracle数据库服务总是超时,原因何在?急!
- 请教:关于表空间和数据文件得问题。
- 请问在PRO*C中如何使用sql语句??
- 关于查询的问题 急问!!!!
- 高手啊,索引,又是索引,有没有可能建一个部分的索引?
- 怎样实现两张表之间的数据更新
一、历史销售清单表(JCDMS_LSXSQDB)
主要字段
SPBS CHAR(7) 商品标识
XSSL NUMBER(10,2) 销售数量
Xdate date 销售时间 ---这里是我加的,相信你的数据表中该有,二、基本信息库(BM_JBXXK)
主要字段
SPBS CHAR(7) 商品标识
SM VARCHAR2(80) 书名
DJ NUMBER(10,4) 定价----***************一段时间内销售总量前五名******************----------首先要有时间字段吧.也就是说你的历史表中应该有个销售时间,比如前台某张订单的销售时间,总归要有个时间字段.,
select * from
( --扩号里是计算五天内的各书的汇总,
select
a.sm Book_Name,
a.dj Book_Price,
sum(XSSL) sumQty
from
JCDMS_LSXSQDB a_his,
BM_JBXXK a
where
1=1
and a.spbs=a_his.spbs
and (sysdate-a_his.XDate)<=5
group by
a.sm,
a.dj
order by
sum(XSSL) desc
)
where rownum<=5 --降序排序后选前五条.
select m.spbs||' '||m.sm,sum(m.xssl) from jcdms_lsxsqdb m,bm_jbxxk j
where trunc(xssj)>=to_date('2003-05-10','yyyy-mm-dd')
and trunc(xssj)<=to_date('2003-05-15','yyyy-mm-dd')
and m.spbs=j.spbs
group by m.spbs||' '||m.sm
order 2 desc楼主,试试这个
from (
select spbs,sumXSSL
from (select spbs,sum(xssl) as sumXSSL from JCDMS_LSXSQDB
where xssj > sysdate - 7
and xssj < sysdate + 1
group by spbs
order by sumXSSL desc )
where rownum < 6
) t1,BM_JBXXK t2
where t1.spbs = t2.spbs (+)
select 商品标识 sum(销售数量) as 销售数量 from 历史销售清单表 group by 商品标识
where (sysdate-a_his.XDate)<=5
) a
where a.商品标识=b.商品标识
and rownum <= 5
order by desc a.销售数量
是不起作用的。写法A:
Select A.SPBS,Sum(B.XSSL*A.DJ) as s From BM_JBXXK A,JCDMS_LSXSQDB B
Where A.SPBS=B.SPBS And TO_CHAR(XSSJ,'YYYY-MM-DD')>='2004-06-16' And TO_CHAR(XSSJ,'YYYY-MM-DD')<='2004-06-18' And rownum<=5
Group by A.SPBS Order by S Desc执行结果是不准确的,可能出现的记录只有3条。 写法B:
Select B.SPBS,Sum(B.XSSL) as s From JCDMS_LSXSQDB B
Where TO_CHAR(XSSJ,'YYYY-MM-DD')>='2004-06-16' And TO_CHAR(XSSJ,'YYYY-MM-DD')<='2004-06-18' And rownum<=5
Group by B.SPBS Order by S Desc执行正常通过。
你的题目我不太清楚:
1、历史销售清单表(JCDMS_LSXSQDB),是一个每天销售记录的清单吗,就有一个时间字段吧;
2、你要求下,的定价,是每本书的单价,还是销售量的总和;
我的语句为:
select a.sm,b.sum_s,a.dj from bm_jbxxk a,
(select spbs,sum(xssl) sum_s from jcdma_lsxsqdb where rowumn<6 order by sum_s desc) b where a.spbs=b.spbs;
当然还需要一些时间条件的限制。
我的电子信箱:[email protected]
QQ=125470829
去留个QQ吧!!!!