没用过,但在项目里出现的SQL知识点

1.ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)

row_number()从1开始,为每一条分组记录返回一个数字

这里的ROW_NUMBER() OVER (ORDER BY xlh DESC) 是先把xlh列降序,再为降序以后的没条xlh记录返回一个序号。

row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 

表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)

更多相关 http://www.cnblogs.com/icebutterfly/archive/2009/08/05/1539657.html

 

2.PARTITION BY

partition  by关键字是分析性函数的一部分,它和聚合函数不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录

partition  by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组 

资料来源  http://www.cnblogs.com/sanlang/archive/2009/03/24/1420360.html

 

3.ROUND函数

是四舍五入函数,返回数字表达式并四舍五入为指定的长度或精度。

ROUND ( numeric_expression , length [ , function ] )
参数:
numeric_expression
精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。
length
是 numeric_expression 将要四舍五入的精度。
length 必须是 tinyint、smallint 或int。
当 length 为正数时,numeric_expression 四舍五入为 length 所指定的小数位数。
当 length 为负数时,numeric_expression 则按 length 所指定的在小数点的左边四舍五入。
function
是要执行的操作类型。
function 必须是 tinyint、smallint 或 int。
如果省略 function 或 function 的值为 0(默认),numeric_expression 将四舍五入。
当指定 0 以外的值时,将截断 numeric_expression。
返回类型
返回与 numeric_expression 相同的类型。
注释
ROUND 始终返回一个值。如果 length 是负数且大于小数点前的数字个数,ROUND 将返回 0。
 
转自:http://www.cnblogs.com/perfect/archive/2006/11/10/556374.html
 
 4.sp_recompile [ @objname = ] 'object'
使存储过程和触发器在下次运行时重新编译。 具体方法是:从过程缓存中删除现有计划,强制在下次运行该过程或触发器时创建新计划。 在 SQL Server Profiler 集合中,记录事件 SP:CacheInsert 而不是事件 SP:Recompile。
参数
[ @objname= ] 'object'
当前数据库中存储过程、触发器、表或视图的限定或未限定名称。 object 的数据类型为 nvarchar(776),无默认值。 如果 object 是存储过程或触发器的名称,则该存储过程或触发器将在下次运行时重新编译。 如果 object 是表或视图的名称,则所有引用该表或视图的存储过程或触发器都将在下次运行时重新编译。
返回代码值
0(成功)或非零数字(失败)
注释
sp_recompile 只在当前数据库中寻找对象。
存储过程和触发器所用的查询只在编译时进行优化。 对数据库进行了索引或其他会影响数据库统计的更改后,已编译的存储过程和触发器可能会失去效率。 通过对作用于表上的存储过程和触发器进行重新编译,可以重新优化查询。
 注意
SQL Server 会在便利时自动对存储过程和触发器进行重新编译。
转自 http://technet.microsoft.com/zh-cn/library/ms181647.aspx
 

posted @ 2013-01-25 09:09  kumat  阅读(230)  评论(0编辑  收藏  举报