sql的几个排序函数
1用于排序的函数
row_number()
rank()
dense_rank()
ntile(group_number)
下面列举这个函数的用法:
row_number()函数一般用于组内排序,而其他三个函数是对结果集排序
例子:分页排序
<!--注意全局变量也在这里声明,并用逗号隔开-->
create proc MyDividePageSort @iRowCount int ,@iPageNo int
AS
<!--局部变量在这里声明,并要采用关键字-->
declare @iMax int,@strSql nvarchar(100)
<!-并在这里赋值给相应的变量,因为是局部变量,所以必须赋值,但是全局变量的话,可以手动赋值,语句之间不用分隔号,但是独立的执行语句就必须采用go->
set @iMax = @iPageNo * iRowCount
set @strSql = '
select * from (select top('+convert(nvarchar(10),@iRowCount)+' * from
( select top '+convert(nvarchar(10),@iMax)+' row_number() over(order by id asc) rownumber, * form [pc.pt ]order by id asc ) pcmax order by id desc )pcmin order by id asc ) '
<!--执行-->
exec(@strSql)
go
这个是2000的过程,从中我们必须可以清楚了解几点:
1果一个变量被申明为string(nvarchar()),那么如果要该可变的unicode字符串里面的变量成功被赋值的话就必须使用:‘++‘
2还要改变该变量的类型convert(nvarchar(10),@iMax),如果这里直接采用'+@iMax+'会报select top (' 转换成数据类型 int 时失败')
这里为什么要用convert:因为如果直接用@IMax的话,相当于将变量@IMax转换成整数,在程序里面我们可以这样写
select top “+varivant+"* from table;
下面是2005的分页动作
create proc mydividePages @iRowcount int ,@iPageNo int
AS
select * from (select row_number() over(order by id asc ) row,* from sp ) orderdata where row between @ipageNo * @iRowCoount +1 and (@ipageNo +1) * iRowCount;
这里的意思就是:从指定起始的row表中select出结果集来
需要注意的一点就是orderdata,这里必须要别名,因为sql里面只有特殊的函数才允许将2个执行语句放在一起,比如exists,有比如in,加上别名的意思就是相当于一个临时表,这里有不得不提一下CTE查询
with tempCte
{
one statement can run off its own bat(independently);
}
next ,we can use the tempCte
在做分页测试的时候,我遇到了一个很容易忽略
相关文档:
1。select * from a where a.rowid=(select min(b.rowid) from b where a.id=b.id);
create test1(
nflowid number primary key,
ndocid number,
drecvdate date);
insert into test1 values (1, 12301, sysdate) ;
insert into test1 values (2, 12301, sysdate);
select * from test1 order by drecvdate:
......
下列语句部分是Mssql语句,不可以在access中使用。
SQL分类:
DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)
DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)
DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
首先,简要介绍基础语句:
1、说明:创建数据库
CR ......
怎样统计PLSQL语言中删除语句执行之后一共删除了多少条纪录。
Oracle使用两种光标:显式光标和隐式光标。不管语句返回多少条纪录,PL/SQL为使用的每一条UPDATE、DELETE和INSERT等SQL命令隐式的声明一个光标。(要管理SQL语句的处理,必须隐式的给它定义一个光标。)
在PL/SQL中,当执行DML语句的时候,会自动打开一个隐式 ......
1)PL/SQL数据类型
名称
类型
说明
NUMBER
数字型
能存放整数值和实数值,并且可以定义精度和取值范围
BINARY_INTEGER
数字型
可存储带符号整数,为整数计算优化性能
DEC
数字型
NUMBER的子类型,小数
DOUBLE PRECISION
数字型
NUMBER的子类型,高精度实数
INTEGER
数字型
NUMBER的子类型,整数
INT
数 ......
SQL分类:
DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)
DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)
DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
首先,简要介绍基础语句:
1、说明:创建数据库
CREATE DATABASE database-name
2、说明:删除数据库
drop database dbname ......