在MS SQL SERVER中, 如果在Select语句的结果中加入记录号?(100分)

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

silicon

Unregistered / Unconfirmed
GUEST, unregistred user!
No Name
-----------------
1 sfas
2 sdf
3 sdf
4 sdf
5 sdf
6 sdf
No不是字段名哟。是我要取得的行号

 
需要用临时表。

create table #temp (no int identity, name char(10))

insert into #temp (name) select name from mytable

select #temp.no, mytable.*
from #temp, mytable
where #temp.name = mytable.name
 
如果是在DBGrid显示,用计算字段
 
计算不行,会出现
-1
1
2
3
4
这样!我比较看重"飞龙在天"的方法,不知还有其他好办法?多多指教了!
 
增加一个计算字段no,在Table1CalcFields中加如此行
table1no.value := table1.recno;
 
提示:
在oracle中,隐藏字段rowno是行号,我有的时候也需要行号就是不知道怎么
取,我认为不用飞龙兄的方法也可以取道行号!
另:
小弟有个关于fast report的问题请教!有空看看去:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=556086
先谢谢了
 
要是SQL Server中有类似Oracle的rownum的函数就好了,可惜没有!
 
to 飞龙兄:
没有吗,我还以为我没有找到!请问你用过fast report 没有,看看
能不能帮小弟一个忙!
 
抱歉,我没用过fast report。
 
还有想出其他办法了吗?
 
我经常碰到这样的问题,如我要取出最近处理的10条事务,我可以这样写
select Top 10 from table order by DataTime 但如果我用取出指定的行号记录就困难了,用临时
表解决总觉得没效率,我想SQl Server应该有其它方法吧。有谁知道请告之。
 
飞龙兄的方法好象有bug,
name 不是唯一索引,有重复值,按你的方法会多出记录,改成如下:
select identity(int,1,1) as no,* into #temp From test
select * from #temp
 
如果用ADO来查询的话,可以通过ADOQuery.RecNO来得到行号。TQuery不行。
 
Delphi的计算字段完全可以做到,为什么不用呢
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部