微软 SQL、ROW_NUMBER & 外部应用

Microsoft SQL, ROW_NUMBER & OUTER APPLY

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

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

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

您不能在 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