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
在做分页测试的时候,我遇到了一个很容易忽略
相关文档:
下列语句部分是Mssql语句,不可以在access中使用。
SQL分类:
DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)
DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)
DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
首先,简要介绍基础语句:
1、说明:创建数据库
CR ......
库位 货物编号 库存数
1 0101 50
1 0102 60
1 0103 50
2 0101 90
2 0103 100
2 0111 30
3 0101 12 ......
SQL SERVER 数据库链接服务器总结
前段时间,公司的项目开发用到C/S、B/S两种架构。CS部分因为数据的保密性和安全性,采用SQL SERVER 2000(后来随着软件版本升级,采用SQL Server 2005)局域网络。B/S部分采用Oracle9.2数据库。两个部分物理隔离,定时通过网络切换器进行网络切换以完成数据交换。
......
递归的通用表表达式
递归的CTE是根据至少两个查询(或者称为两个成员)构建的,一个是非递归查询,也成为固定成员,只能调用一次,另外一个是递归查询,也成为递归成员(RM),可以反复调用,直到查询不再返回行。查询由UNION ALL运算符连接为一个单独的CTE。
--使用递归的通用表表达式
GO
CREATE TABLE CarParts
( ......
1)PL/SQL数据类型
名称
类型
说明
NUMBER
数字型
能存放整数值和实数值,并且可以定义精度和取值范围
BINARY_INTEGER
数字型
可存储带符号整数,为整数计算优化性能
DEC
数字型
NUMBER的子类型,小数
DOUBLE PRECISION
数字型
NUMBER的子类型,高精度实数
INTEGER
数字型
NUMBER的子类型,整数
INT
数 ......