如何写一个取得某记录行号的存储过程

ahongzhu 2008-05-17 06:06:09
我想写一个存储过程,取得某条记录的行号,如表t1,字段有单号,日期...,我要通过日期倒序排列取得某张单的行号,如何写一个存储过程,输入参数@code,输出参数@rowID,然后通过ADO调用,得到@rowID。
例:单号 日期
001 2008-05-01
002 2008-05-02
003 2008-05-04
...
按日期倒序,如何得到001这张单的rowID是3

如何写这个存储过程?谢谢!
...全文
59 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ojuju10 2008-05-17
  • 打赏
  • 举报
回复


select id=row_number() over (order by 日期 desc),* from tb

tianyusunkuangyu 2008-05-17
  • 打赏
  • 举报
回复
1楼的回答的比我的简化了一步 不需要更新数据了
tianyusunkuangyu 2008-05-17
  • 打赏
  • 举报
回复
create proc getid(@code varchar(10),@rowid int output)
as
begin
begin tran
declare @int int
select @int=0

if exists(select 1 from sysobjects where name='jj' and xtype='u')
drop table jj
select '0' rowid ,单号,日期 into jj from t1 ordery by 日期 desc

update jj set rowid=@int,@int=@int+1

select @rowid=rowid from jj where 单号=@code
if @@error<>0
begin
rollback tran
raiserror('数据库过程错误,16,1) with seterror
return
end
commit tran
end


Limpire 2008-05-17
  • 打赏
  • 举报
回复
agree
liangCK 2008-05-17
  • 打赏
  • 举报
回复
--2005

;
with CTE
as
(
select id=row_number() over(order by 日期 desc),*
from tb
)
select id from CTE where 单号='001'
liangCK 2008-05-17
  • 打赏
  • 举报
回复
select id=identity(int,1,1),* into # from tb order by 日期 desc

select id from # where 单号='001'

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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