Microsoft SQL、ROW_NUMBER 和外部应用

Posted

技术标签:

【中文标题】Microsoft SQL、ROW_NUMBER 和外部应用【英文标题】:Microsoft SQL, ROW_NUMBER & OUTER APPLY 【发布时间】:2016-09-13 11:39:33 【问题描述】:

我在使用外部应用时遇到了一些问题,特别是我无法从 OUTER APPLY 中引用 ROW。

请注意,如果我将 where ROW 标准放在外部应用之外,例如没有第 3、4 或第 5 行的人不会返回。

OUTER APPLY 
(
SELECT  ROW_NUMBER()
             OVER (ORDER BY L.DATECREATED) AS ROW,
             L.PERCENTAGE
             LABOURALLOCATION L
             ***WHERE ROW = 1***
) RECORDS

【问题讨论】:

【参考方案1】:

您不能在 where 子句中引用别名列。您也不能将row_number() 函数放在wherehaving 中。如果您需要在cross apply 中限制为row = 1,唯一的方法是将row_number() 放在子查询中,或者作为CTE。注意ROW是一个保留字——我通常使用ROW_NUM

OUTER APPLY 
(
SELECT  ROW_NUM, PERCENTAGE
FROM    (
        SELECT  ROW_NUMBER()
                     OVER (ORDER BY L.DATECREATED) AS ROW_NUM,
                     L.PERCENTAGE
                     FROM LABOURALLOCATION L
        )
WHERE ROW_NUM = 1
) RECORDS

【讨论】:

谢谢你!设法让它完美运行!

以上是关于Microsoft SQL、ROW_NUMBER 和外部应用的主要内容,如果未能解决你的问题,请参考以下文章

ROW_NUMBER() Sql 错误

sql 查询与 Row_Number 不同

ROW_NUMBER SQL Server 2005的LIMIT功能实现(ROW_NUMBER()排序函数)

sql MS SQL数据聚合 - ROW_NUMBER

sql2000不支持Row_Number() over吗

sql server row_number