文档介绍:SqlServer 2019 Query 个人学****笔记
SQL2019 增 加 了 4 个 关 于 队 计 算 的 函 数 : 分 别 是 ROW_NUMBER,RANK,DENSE_RANK,NTILE.
注意:这些函数只能出现在 SELECTS ORDERY的查询中。语法
如下:
ranking_function over([partition by col_list] order by col_list)
ROW_NUMBE隘排序的基础上对所有列进行连续的数字进行标
识。
执行顺序: 为了计算列值, 优化器首先需要把数据在分区列上进
行排序,然后在对这些列进行编码。
SQL2019 之前的技术处理列计算
(SET-BASE)D
在SQL2019^前,已经有了简单的对列集合的计算, 使用unique partitioning + sort 组合。
比如,你可以使用下面的技术:
SELECT empid, (SELECT COUNT(*) FROM AS S2 WHERE = ) AS rownumFROM AS S1ORDER BY empid;
这是非常简单的,但也是非常慢的。
如果需要组合条件产生列数 (即非唯一列的组合排序和断路器) 可以这样做:
SELECT empid, qty, (SELECT COUNT(*) FROM AS S2
OR ( = AND =
)) AS rownumFROM AS S1ORDER BY qty, empid;
当然还有很多方法,比如用游标,就不写例子了。
( IDENTITY-Based Solution )
SELECT empid, qty, IDENTITY(int, 1, 1) AS rnINTO
SalesRN;DROP TABLE #SalesRN;