delphi2007 教程

delphi2007 教程

首页 新随笔 联系 聚合 管理
  1013 Posts :: 0 Stories :: 28 Comments :: 0 Trackbacks
用SQL排名次的问题 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiDB/html/delphi_20061222112436167.html
在制作一个货物销量排名报表时,我用一名SQL语句联合查询出了货物ID及对应的销售总量:  
  SQL.text:='select   货物ID,sum(销量)   as   销量   from   销售表   group   by   货物ID   order   by   sum(销量)   desc'  
  现在我想在查询结果中加一个名次字段,显示排名,请教各位这句SQL该如何写

SQL.text:='select   '+   quotedstr('排名值')   +   '   as   排名,货物ID,sum(销量)   as   销量   from   销售表   group   by   货物ID   order   by   sum(销量)   desc'  
  这样会显示排名字段,而且值全部是“排名值”

大哥,这样的话,排名字段显示的内容全都是字符“排名值”,有什么意思呢,我是想让排名的值从1、2、3依次递增

哈,这问题太难了吧,怎么没人回答?

没感觉很难,一个相关子查询就能搞定,可能是大家都写累了吧!  
  我帮你写一个!  
  保留名次:  
  Select   *,  
              Rank=(select   count(distinct(销量))   from   table1   where   销量>=A.销量)  
  From   table1   A  
  不保留名次:  
  select   *,  
              rank=(select   count(1)   from   table1   where   销量>A.销量)+1  
  from   table1   A

谢谢楼上的大哥,可惜我看不懂,能不能解释一下?

我帮忙解释一下,用保留名次语句会显示如下:  
  1  
  2  
  2  
  2  
  3  
  4(记录数一共为6条)  
  用不保留名次显示如下:  
  1  
  2  
  2  
  2  
  5  
  6(记录数一共为6条)  
  其中销量表示排序字段,用子查询来获得大于该销量的记录数(就是排名了)。

谢谢笑青天和绿色落叶,我主要是对以上语法不懂,查了一下SQL中文参考手册,搜索rank,竟找不到一条,在网上查找后,才知是某数据库服务器特有的东西,可我用的是access呀,再请二位老师指教。

posted on 2008-12-11 10:09 delphi2007 阅读(155) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。