9
使用T-SQL的排名函数时,包含排名值的列可以为空。为什么T-SQL排名值返回空列?
创建结果集的视图时,你可以看到这一点:
CREATE VIEW v
AS
SELECT Name
, ListPrice
, RANK() OVER (ORDER BY ListPrice DESC) AS [Rank]
, DENSE_RANK() OVER (ORDER BY ListPrice DESC) AS [DenseRank]
, ROW_NUMBER() OVER (ORDER BY ListPrice DESC) AS [RowNumber]
FROM Production.Product
此视图下执行sp_help
表明,使用排名函数的列是可空:
EXEC sp_help 'v'
Column_name (...) | Nullable
---------------...-+------------+
... (...) | ...
Rank (...) | Yes
DenseRank (...) | Yes
RowNumber (...) | Yes
何种条件将导致排名函数返回NULL
?
视图中的AFAIK计算列与基表中的计算列没有任何区别。 [关于这个和可空性的一些评论在本页底部。](http://msdn.microsoft.com/en-us/library/ms191250.aspx) –