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
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