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
好象多了一个列名,并且排序时,我觉得用列索引要好一些

解决方案 »

  1.   

    现有两个数据表
    一、历史销售清单表(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   --降序排序后选前五条.
      

  2.   

    看错了,如果是列出最近一个星期把sysdate-a_his.XDate<=7就行了.而且这样的计算是假定在这段时间内,你的定价没有变化过.
      

  3.   

    晕,没看清题目
    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楼主,试试这个
      

  4.   

    select t1.spbs,t2.sm,t2.dj,t1.sumXSSL
    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 (+)
      

  5.   

    select a.商品标识 a.销售数量 b.定价 b. 书名 from  基本信息库 b ,(
            select 商品标识 sum(销售数量) as 销售数量 from 历史销售清单表 group by 商品标识
                where (sysdate-a_his.XDate)<=5 
            ) a
        where a.商品标识=b.商品标识
              and rownum <= 5
        order by desc a.销售数量
      

  6.   

    各位请注意一下,oracle数据库中当两个表联合查询的时候,直接用rownum
    是不起作用的。写法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执行正常通过。
      

  7.   

    你好!
       你的题目我不太清楚:
       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]
      

  8.   

    这还不容易?在QQ里找我,交个朋友,我们做的程序就有这样的统计,只不过不是书,而是服装
    QQ=125470829
      

  9.   

    http://community.csdn.net/Expert/topic/3132/3132037.xml?temp=.2402613
    去留个QQ吧!!!!