求一存储过程 哪位高手路过看看

own2sky 2010-10-08 07:08:40
图一 排序 图二 排序
------------------- -------------------
1 设置 1 设置
4 设置 2 设置
8 设置 3 设置
12 设置 4 设置

以上两图为某页面的部分 写一存储过程实现 由图一转为图二的样子 数值 1 4 8 12 都在文本框里 通过设置按钮可以修改 不论改为多少 点设置后刷新变为图二,要求用存储过程来实现;

简单一些就是求一可以排序 排为1、2、3、4……的存储过程脚本

可设置一下一些参数
CREATE Procedure [dbo].spWageItemSetSort
(
@W_I_Id varchar(50),
@Sort Int,
@result varchar(50) out -- 返回结果
)

--DECLARE @NW_I_Id varchar(50) --工资项目ID
--DECLARE @OldSort int --原排序值
--DECLARE @MaxSort int --当前最大的排序值
...全文
88 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2010-10-09
  • 打赏
  • 举报
回复
--查询
--sql 2000
select 图二 = (select count(1) from tb where 排序 = t.排序 and 图一 < t.图一) + 1 , 排序 from tb t
select 图二 = (select count(1) from tb where 图一 < t.图一) + 1 , 排序 from tb t

--sql 2005
select 图二 = row_number() over(partition by 排序 order by 图一), 排序 from tb t
select 图二 = row_number() over(order by 图一), 排序 from tb t

--更改
update tb
set 图二 = (select count(1) from tb where 排序 = t.排序 and 图一 < t.图一) + 1 , 排序 from tb t
own2sky 2010-10-09
  • 打赏
  • 举报
回复
怎么都写的SQL语句啊,难道我没讲清楚?
叶子 2010-10-08
  • 打赏
  • 举报
回复
row_number() over(order by 你要排序的字段) as 序号
hao1hao2hao3 2010-10-08
  • 打赏
  • 举报
回复
[Quote=引用楼主 own2sky 的回复:]
可设置一下一些参数
CREATE Procedure [dbo].spWageItemSetSort
(
@W_I_Id varchar(50),
@Sort Int,
@result varchar(50) out -- 返回结果
)

--DECLARE @NW_I_Id varchar(50) --工资项目ID
--DECLARE @OldSort int --原排序值
--DECLARE @MaxSort int --当前最大的排序值
[/Quote]

这里提到了工资项目ID,那还是把你自己的表结构列出来吧!还有测试数据,以及最后想要实现的效果。

hao1hao2hao3 2010-10-08
  • 打赏
  • 举报
回复


if object_id('tb')>0
drop table tb
create table tb(id int,s nvarchar(20))

insert into tb
select 1,'设置'
union all
select 4,'设置'
union all
select 8,'设置'
union all
select 12,'设置'

select * from tb

select row_number() over(order by getdate()) as id ,s
from tb
order by s

--结果
1 设置
2 设置
3 设置
4 设置

「已注销」 2010-10-08
  • 打赏
  • 举报
回复
是不是你期望的?
CREATE TABLE #tp
(
id INT,
sort NVARCHAR(10)
)

INSERT INTO #tp SELECT 1,N'设置'
INSERT INTO #tp SELECT 4,N'设置'
INSERT INTO #tp SELECT 8,N'设置'
INSERT INTO #tp SELECT 12,N'设置'

SELECT *,ROW_NUMBER()OVER(ORDER BY GETDATE())new_id FROM #tp t

id sort new_id
----------- ---------- --------------------
1 设置 1
4 设置 2
8 设置 3
12 设置 4

(4 row(s) affected)
水族杰纶 2010-10-08
  • 打赏
  • 举报
回复
if not object_id('tb') is null
drop table tb
Go
Create table tb([ID] int,[name] nvarchar(2))
Insert tb
select 1,N'设置' union all
select 4,N'设置' union all
select 8,N'设置' union all
select 12,N'设置'
Go
--2000
Select ID=(select count(*) from tb where id<=t.id),
[Name]
from tb t
---2005
select ID=row_number()over(order by id ),
[name]
from tb
「已注销」 2010-10-08
  • 打赏
  • 举报
回复
查询的时候加上row_number()over(order by getdate())就可以了。

6,129

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 新技术前沿
社区管理员
  • 新技术前沿社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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