时间:2021-05-23
AD HOC PAGING:
就是指用页面的序号和页面的大小请求一个单独的页面。下面是例子。
DECLARE @pagesize AS INT, @pagenum AS INT;SET @pagesize = 5;SET @pagenum = 2;WITH SalesCTE AS( SELECT ROW_NUMBER() OVER(ORDER BY qty, empid) AS rownum, empid, mgrid, qty FROM dbo.Sales)SELECT rownum, empid, mgrid, qtyFROM SalesCTEWHERE rownum > @pagesize * (@pagenum-1) AND rownum <= @pagesize * @pagenumORDER BY rownum;MULTIPAGE ACCESS:
如果结果集不是很大,而且分了多个请求页面,请求也不向前移动,那么这是一个好的方案:首先在一个表里使用ROW_NUMBER具体化所有的页,然后创建一个群集索引。下面是例子。首先创建按ROW_NUMBER把列编好,
SELECT ROW_NUMBER() OVER(ORDER BY qty, empid) AS rownum, empid, mgrid, qty INTO #SalesRN FROM dbo.Sales;CREATE UNIQUE CLUSTERED INDEX idx_rn ON #SalesRN(rownum);然后直接按ROWNUM查询,
DECLARE @pagesize AS INT, @pagenum AS INT; SET @pagesize = 5; SET @pagenum = 2; SELECT rownum, empid, mgrid, qty FROM #SalesRN WHERE rownum BETWEEN @pagesize * (@pagenum-1) + 1 AND @pagesize * @pagenum ORDER BY rownum;RANK & DENSE RANK
这2个函数和ROW_NUMBER的区别是:ROW_NUMBER在ORDER BY的条件里有重复行存在的话,是把这些重复行也按INDEX排列的,但是RANK和DENSE RANK总是确定的,即只要是ORDER BY重复的行,他们是统一INDEX的。
RANK和DENSE_RANK的区别是,RANK是如果上级的INDEX和下级的INDEX有可能不是+1关系,是按下级真正处于列里的位置进行INDEX,而DENSE_RANK是按照跟上级的INDEX+1的关系进行的编码。
比如:
SELECT empid, qty, RANK() OVER(ORDER BY qty) AS rnk, DENSE_RANK() OVER(ORDER BY qty) AS drnk FROM dbo.Sales ORDER BY qty;NTILE
NTILE的用法和其他的RANK函数一样,只不过它可以传入一个参数,用来决定最大的INDEX是多少:它会按行数进行除法,然后平均分配行数进行INDEX的标示。
比如,如果有11列,那么首先11/3=3,3列一组作为一个INDEX,然后,11%3=2,这2列会分别加在前面的2组上。
比如,
SELECT empid, qty, CASE NTILE(3) OVER(ORDER BY qty, empid) WHEN 1 THEN 'low' WHEN 2 THEN 'medium' WHEN 3 THEN 'high' END AS lvlFROM dbo.SalesORDER BY qty, empid;声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Access也有IsNull函数,但意义和参数却和T-SQL中的不同。 在T-SQL(也就是SQLServer所支持的SQL语言)中,IsNull的作用是
数据库,比如Microsoft'sSQLServer2005使用Transact-StructuredQueryLanguage(T-SQL)来插入、修改、
分组取TOP数据是T-SQL中的常用查询,如学生信息管理系统中取出每个学科前3名的学生。这种查询在SQLServer2005之前,写起来很繁琐,需要用到临时表关
1、SQLServer导出为Excel: 要用T-SQL语句直接导出至Excel工作薄,就不得不用借用SQLServer管理器的一个扩展存储过程:xp_c
设置最大连接数 下面的T-SQL语句可以配置SQLServer允许的并发用户连接的最大数目。 execsp_configure'showadvanced