个人整理摘录的SQL2005新增几种常用的T-SQL语句

  个人整理摘录的SQL2005新增几种常用的T - SQL语句
-- SQL2005 分页
select   *   from ( select  id, title, ROW_NUMBER()  OVER ( order   by   [ id ]   desc as  row  from  fabu) a 
where  row  between   1000   and   1020  
-- SQL2005 排位
select   *   from ( select  id, title, RANK()  OVER ( order   by   [ id ]   desc as  rank  from  fabu) a 
where  rank  between   1000   and   1020  

-- top.可以动态传入参数,省却了动态SQL的拼写。 
DECLARE   @top   int ;
set   @top = 10 ;
select   top ( @top ) id  from  fabu
/*Apply.对递归类的树遍历很有帮助 CROSS APPLY 仅返回外部表中通过表值函数生成结果集的
行。OUTER APPLY 既返回生成结果集的行,也返回不生成结果集的行,其中表值函数生成的列
中的值为 NULL.
*/


-- CTE.创建临时表,使阅读清晰,非常有时代感
WITH  Sales_CTE (id, date, title)
AS
(
     
SELECT   top   10  id,addtime,title  FROM  fabu  order   by  id  asc
)
select   top   5  id,title  from  Sales_CTE  ORDER   BY   [ id ]   desc ;
-- try/catch 代替了原来VB式的错误判断。比Oracle高级不少
BEGIN  TRY
     
--  Generate divide-by-zero error.
      SELECT   1 / 0 ;
END  TRY
BEGIN  CATCH
     
SELECT  ERROR_NUMBER()  AS  ErrorNumber;
END  CATCH;
GO
-- pivot/unpivot使用 PIVOT 和 UNPIVOT 关系运算符对表值表达式进行操作以获得另一个表
exec  sp_dbcmptlevel  ' gwtest ' , ' 90 '
SELECT   [ id ] ,title,addtime
FROM  
(
SELECT   top   10   [ id ] ,title,addtime,userid  from  fabu  order   by  id) p
PIVOT
(
COUNT  (userid)
FOR  userid  IN
[ 4 ] [ 222 ] [ 218 ]  )
AS  pvt
ORDER   BY   [ id ]  
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值