在视图中按顺序使用分区是否有效

时间:2016-03-22 20:32:30

标签: tsql

我正在审查一个视图定义,如下所示。除非与TOP一起使用,否则我可以在视图定义中找到有关如何不遵守order by的信息。但不确定这种观点是否会按预期发挥作用。假设EmpployeeDup具有重复的EmpID,此视图将提供最新的所有员工记录。

当我测试时,这似乎按预期工作,但如果在sql server的View定义中使用时不能保证order by,我认为我们不能依赖它。

CREATE VIEW Test AS

SELECT * FROM 

(SELECT *

 ,ROW_NUMBER() OVER (PARTITION BY EmpID ORDER BY LastupdateDatetime DESC) as row_num 

FROM  EmpployeeDup) as rows

WHERE row_num = 1

;

GO

1 个答案:

答案 0 :(得分:0)

您的问题的答案是肯定的,您的查询将按预期工作。如果您在没有TOP,OFFSET或FOR XML的视图中尝试使用订单,那么“不尊重”并不会发生什么。你会得到一个错误错误

The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP, OFFSET or FOR XML is also specified.

它非常清楚地告诉您必须做些什么才能使查询正常工作。