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


posted @ 2009-08-13 15:10  艾伦  阅读(507)  评论(0编辑  收藏  举报