请问这种情况该怎么办?

hwyqy 2004-01-29 04:54:28
我从多个表中选出了一系列的数据,建成一个排名表,排出前n位。生成的报表中有一栏名次,当然是从1~n了。由于一定要用绑定(一定要用),该列须自动生成。可是该列怎么生成啊?偶想了很多办法也办不到。平台为VB6.0+SQL Sever2000。还请各位大虾帮忙。
...全文
29 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
简易无忌 2004-01-30
  • 打赏
  • 举报
回复
假设你的纪录集为“select top 10 * from ... as AAA or der bai Key”

那么有一种方法可以排名:

select
NUM=1+(select count(Key) from
(select top 10 * from ... order by Key) as BBB where BBB.key<AAA.key)
,*
from (select top 10 * from ... order by Key) as AAA
kmzs 2004-01-30
  • 打赏
  • 举报
回复
up
hwyqy 2004-01-30
  • 打赏
  • 举报
回复
哦,新增一列,这方法也不错。谢谢
脆皮大雪糕 2004-01-30
  • 打赏
  • 举报
回复
我想用chewinggum(口香糖·目标两颗星星) 的方法,程序中添加一列来处理,但由于从多个数据表中生成的,无法修改。
__________________________________________________
我的意思是处理你最终获得的那个数据集。
你已经从多个数据表中生成数据了,那么你的程序中应该已经有一个recordset来接受这个数据集了吧。先调用一次recordset的open方法,然后recordset.Fields.Append 增加一列。接下来就可以循环往这列里面写入序号。循环过程中稍微做一点控制就能够解决并列排名问题了
victorycyz 2004-01-30
  • 打赏
  • 举报
回复
select *,identity(int,1,1) as rank into #t from 表 order by 排名字段 desc
select * from #t
无法得到正确的顺序,会出现2,1,3这样的情况
============================================================================

改一下:
select identity(int,1,1) as rank, * into #t from 表 order by 排名字段 desc
select * from #t
drop table #t
简易无忌 2004-01-29
  • 打赏
  • 举报
回复
假设你的纪录集为“select top 10 * from ... as AAA or der bai Key”

那么有一种方法可以排名:

select
NUM=1+(select count(Key) from
(select top 10 * from ... order by Key) as BBB where BBB.key<AAA.key)
,*
from (select top 10 * from ... order by Key) as AAA
hwyqy 2004-01-29
  • 打赏
  • 举报
回复
好像是先写入#t,然后才对其排序。rank字段是生成的是1~n的数,但是就是没排序好。
hwyqy 2004-01-29
  • 打赏
  • 举报
回复
select *,identity(int,1,1) as rank into #t from 表 order by 排名字段 desc
select * from #t
无法得到正确的顺序,会出现2,1,3这样的情况
hwyqy 2004-01-29
  • 打赏
  • 举报
回复
简单点,不考虑并列。如何使用存储过程?我没用过啊。
我想用chewinggum(口香糖·目标两颗星星) 的方法,程序中添加一列来处理,但由于从多个数据表中生成的,无法修改。
脆皮大雪糕 2004-01-29
  • 打赏
  • 举报
回复
楼上各位有没有考虑并列名次啊。
其实有很多办法,如果不需要考虑并列情况,用楼上的办法就可以了。如果要考虑的话,稍微麻烦一点。也可以把获取的数据集在程序中添加一列来处理,处理完毕以后再绑定到表格控件上去。
victorycyz 2004-01-29
  • 打赏
  • 举报
回复
建存储过程,类似这样处理:

select *,identity(int,1,1) as rank into #t from 表 order by 排名字段 desc
select * from #t
drop table #t
linkinwork 2004-01-29
  • 打赏
  • 举报
回复
"一定要用绑定"是什么意思!!
golden24kcn 2004-01-29
  • 打赏
  • 举报
回复
select IDENTITY(int, 1,1) ,id,name,piont into newtalbename from yourtable order by pion
online 2004-01-29
  • 打赏
  • 举报
回复
选出后生成一个排名表(包含列)
然后绑定

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧