微软 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()
函数放在 where
或 having
中。如果您需要在 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
我在使用外部应用时遇到了一些问题,特别是我无法从外部应用中引用 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()
函数放在 where
或 having
中。如果您需要在 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