这个sql怎么写? (100分)

  • 主题发起人 主题发起人 Samsun
  • 开始时间 开始时间
S

Samsun

Unregistered / Unconfirmed
GUEST, unregistred user!
对不起,刚才按错了。
表Sales中有ID、TITLE和TOTAL三列,分别表示物品识别号、名称和销售额,想写一个查询,
除返回上述三列外,增加一列给出销售额的排序(最高为1,次之为2...)
 
有这样的问法?
快快贴出来吧!
 
如你的表名为aaa
SELECT id, title, total, (select count(*) from aaa where total>bbb.total) +1
FROM aaa AS bbb;
 
感谢killgates提供的方法,不过还是不行,序号全为1
 
1。临时表
2。直接sql语句涉及到比较深层次的操作,而且每生成一列都要进行一次
表扫描,记录多的话就不行。
3。请问你想实现怎样的功能?
 
如果只想对销售额排序,没必要增加一列???
直接:select ID,TITLE,TOTAL form Sales order by total

 
你误解了,用select ID,TITLE,TOTAL form Sales order by total来查当然可以按销售额
排序,可我希望得到的是销售额从高到低的排名。
 
笨法:
表中再加一个字段
不说了,要挨骂
 
select ID,TITLE,TOTAL form Sales order by total desc
你再去试试

 
liuxiaouo朋友,我说的不够清楚吗?
 
在 MsSql中
select ID,TITLE,TOTAL,identity(int,1,1) as order_id into #temp form Sales order by total desc
select * from #temp

 
似乎问题已经解决了。
http://www.delphibbs.com/delphibbs/dispq.asp?lid=318597
 
xuechao,谢谢你的方法,可行,不过要改一下(我也是在MSSQL上试的),如果原表
中的ID字段也是Identity属性的话,在生成的临时表中就不能包含ID,否则无法再生成
一个Identity字段。另外,在执行时,MSSQL好象是插入order_id在前,排序在后,因此,
生成的序号实际上还是原表的缺省排序。我做了下改动,如下:
1、select TITLE,TOTAL into #temp1 from Sales order by total desc
2、select identity(int,1,1) as order_id,TITLE,TOTAL into #temp2 from #temp1
3、select * from #temp2
 
后退
顶部