Sql2005的新函数

row_number,rank,dense_rank,ntile,pivot
具体用法:
with  t_rowtable
 as
(
select cDealer_code,cDealer_Name,csales_code
,row_number() OVER (ORDER BY csales_code desc) AS cOper_codes
from tbl_dealer 
)
select * from  t_rowtable 
where cOper_codes between 1 and 2
查询结果:
cDealer_code cDealer_Name csales_code cOper_codes
00141 北京利达万顺汽车销售有限公司 8850 1
00349 北京陆地恒通经贸发展有限公司 8850 2
一句话分页:
select * from (
select cDealer_code,cDealer_Name,csales_code
,row_number() OVER (ORDER BY csales_code desc) AS cOper_codes from  tbl_dealer 
)  a
where  cOper_codes  between 1 and 2


with  t_rowtable
 as
(
select cDealer_code,cDealer_Name,csales_code
,rank() OVER (ORDER BY csales_code desc) AS cOper_codes
from tbl_dealer 
)
select * from  t_rowtable 
where cOper_codes between 1 and 14
查询结果:
cDealer_code cDealer_Name csales_code cOper_codes
00141 北京利达万顺汽车销售有限公司 8850 1
00349 北京陆地恒通经贸发展有限公司 8850 1
01488 sy_test1 8850 1
01909 111 8850 1
02005 999 8850 1
02010 222 8850 1
02066 华泰汽车销售有限公司 8850 1
02099 华扬联众广告公司(一汽大众) 8850 1
02100 福建新恒基广告公司 8850 1
02091 北京中广群星公关策划有限公司 8850 1
02145 博圣云峰广告有限公司 8850 1
02202 北京海辰恒业传媒广告有限公司 8850 1
02228 北京车闻公关咨询有限公司 8850 1
01450 广东汇港汽车有限公司 8844 14
01615 广东浩伟汽车发展有限公司 8844 14
00230 广州祥城汽车贸易有限公司 8844 14
00418 广东通达汽车贸易有限公司 8844 14

with  t_rowtable
 as
(
select cDealer_code,cDealer_Name,csales_code
,dense_rank() OVER (ORDER BY csales_code desc) AS cOper_codes
from tbl_dealer 
)
select * from  t_rowtable 
where cOper_codes between 1 and 2
查询结果:
cDealer_code cDealer_Name csales_code cOper_codes
00141 北京利达万顺汽车销售有限公司 8850 1
00349 北京陆地恒通经贸发展有限公司 8850 1
01488 sy_test1 8850 1
01909 111 8850 1
02005 999 8850 1
02010 222 8850 1
02066 华泰汽车销售有限公司 8850 1
02099 华扬联众广告公司(一汽大众) 8850 1
02100 福建新恒基广告公司 8850 1
02091 北京中广群星公关策划有限公司 8850 1
02145 博圣云峰广告有限公司 8850 1
02202 北京海辰恒业传媒广告有限公司 8850 1
02228 北京车闻公关咨询有限公司 8850 1
01450 广东汇港汽车有限公司 8844 2
01615 广东浩伟汽车发展有限公司 8844 2
00230 广州祥城汽车贸易有限公司 8844 2
00418 广东通达汽车贸易有限公司 8844 2

with  t_rowtable
 as
(
select cDealer_code,cDealer_Name,csales_code
,ntile(6990) OVER (ORDER BY csales_code desc) AS cOper_codes
from tbl_dealer 
)
select * from  t_rowtable 
where cOper_codes between 1 and 5
查询结果:
cDealer_code cDealer_Name csales_code cOper_codes
00141 北京利达万顺汽车销售有限公司 8850 1
00349 北京陆地恒通经贸发展有限公司 8850 1
01488 sy_test1 8850 2
01909 111 8850 2
02005 999 8850 3
02010 222 8850 3
02066 华泰汽车销售有限公司 8850 4
02099 华扬联众广告公司(一汽大众) 8850 4
02100 福建新恒基广告公司 8850 5
02091 北京中广群星公关策划有限公司 8850 5

privot用法:
declare  @t  table (name  varchar ( 20 ))
insert  @t
select  ' abc '  union  all
select  ' xxx '  union  all
select  ' xxx '  union  all
select  ' ttt '
;
with  tt  as (
select  *  from  @t  pivot( count (name)  for  name  in ( [ abc ]  , [ ttt ] , [ xxx ] )) p)
select  *  from  tt


参照此处学习之:
http://www.blogjava.net/nokiaguy/archive/2009/nokiaguy/archive/2008
/nokiaguy/archive/2009/02/21/255956.html


你可能感兴趣的:(sql2005)