--排列名次的sql server函数-------------(原创)

原创 2004年09月27日 19:03:00

--排列位置的sql server函数-------------
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO


create   procedure up_get_sort
      @ls_o  varchar(10)
as
declare @ll_sort int,
 @ldc_value dec(9,2),
 @ls_id varchar(16),
 @ll_same int,
 @ls_sql varchar(200)
 
 

Begin

---排位计算-------
-----------------------
---有这么一个规则 数值相同的排名相同,
---而且占有位置例如第1名分数相同有3人,那么第2名就从4名开始------
--======================---------------
--开始之前要把关键字和数值保存到exam_use_sort表里
set @ll_sort =1

if lower(@ls_o) = 'desc' or lower(@ls_o)='d'
begin--降序
set @ls_sql = ' SELECT id,use_value FROM exam_use_sort  order by isnull(use_value,0) desc'


end
else
begin--升序
set @ls_sql = ' SELECT id,use_value FROM exam_use_sort  order by isnull(use_value,0)'
end

exec('declare  cur  cursor for '+@ls_sql)

OPEN cur ;

fetch next from cur into @ls_id,@ldc_value;

WHILE @@FETCH_STATUS = 0
BEGIN
update exam_use_sort set use_sort = @ll_sort where
 use_value = @ldc_value;
--有多少条相同的
select @ll_same = isnull(count(*),0) from exam_use_sort
where    use_value = @ldc_value;

set @ll_sort = @ll_sort + @ll_same

fetch next from cur into @ls_id,@ldc_value;

END
CLOSE cur;
DEALLOCATE cur;

End

 


GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

-------函数用到得表------------------
CREATE TABLE [exam_use_sort] (
 [id] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
 [use_value] [decimal](18, 2) NULL ,
 [use_sort] [int] NULL
) ON [PRIMARY]
GO

SQL Server排名或排序的函数

SQL Server获得排名或排序的函数有如下几种: 1、Rank:在结果集中每一条记录所在的排名位置,但排名可能不连续,例如:若同一组内有两个第一名,则该组内下一个名次直接跳至第三名 select ...
  • blogtjf
  • blogtjf
  • 2015年08月21日 14:30
  • 620

--排列名次的sqlserver函数-------------(原创)

  • zgqtxwd
  • zgqtxwd
  • 2008年04月27日 02:59
  • 258

用SQL计算名次

   几天前在CSDN回答别人的问题: SQL怎样取得指定人的名次 ,现将结果招录下来。 一、测试数据: select A.* into #tmp_Ma...
  • nhconch
  • nhconch
  • 2005年03月16日 17:38
  • 3300

全排列的编码与解码——【康托展开及其逆运算】

参考过程:点击打开链接 参考代码:点击打开链接 康托展开表示的是当前排列在n个不同元素的全排列中的名次。比如213在这3个数所有排列中排第3。   那么,对于n个数的排列,康托展开为: ...
  • hahohehehe
  • hahohehehe
  • 2017年04月04日 19:55
  • 319

SQL 获取排名排序后的名次

一、查出所有用户和他们的分数排名(sql语句如下) /* 查出所有用户和他们的分数排名 * id string 用户id * s...
  • u014068781
  • u014068781
  • 2017年06月16日 19:56
  • 1066

如何在 SQL Server 的存储过程和函数里进行错误处理

sql server 2005里引进了try...catch结构,下面具体讲述如何使用,并介绍处理错误是用到的各种函数和变量,包括:ERROR_NUMBER(),ERROR_SEVERITY(),ER...
  • footpath
  • footpath
  • 2009年02月20日 15:53
  • 1900

SQL SERVER返回列表带if判断的函数写法

范例如下:(来源网络)     ALTER FUNCTION fn_ab     (         @db VARCHAR(1)     )     RETURNS @r TABLE(...
  • chrisplus
  • chrisplus
  • 2016年11月30日 13:24
  • 1042

SQL成绩统计分析—排名问题

ROW_NUMBER(),RANK(),DENSE_RANK(),NTILE()最近写了近半个月的成绩统计服务 , 被SQL折磨半死,下面介绍下在SQL成绩统计分析中遇到的一些小问题,首先介绍下成绩分...
  • u013419838
  • u013419838
  • 2015年07月18日 15:51
  • 6916

Sql Server起今为止最全的【日期函数大全】!(超经典,全部为示例)

select convert(varchar(10),getdate(),120) -- 只返回当前日期,且为2012-12-12格式(最有用) datediff(day,create...
  • dxnn520
  • dxnn520
  • 2013年01月01日 01:28
  • 8498

SQL SERVER中的Reverse函数

SQL SERVER中的Reverse函数 reverse返回字符串值的逆向值。如果其他类型使用reverse函数,系统会先转换成字符类型然后再使用reverse函数。下面举几个例子: 1. ...
  • misterliwei
  • misterliwei
  • 2011年11月02日 15:44
  • 8525
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:--排列名次的sql server函数-------------(原创)
举报原因:
原因补充:

(最多只允许输入30个字)