我Row_Number()在where子句中找到了一个用函数回答的问题.当我尝试一个查询时,我收到以下错误:
"消息4108,级别15,状态1,行1窗口函数只能出现在SELECT或ORDER BY子句中."
这是我试过的查询.如果有人知道如何解决这个问题,请告诉我.
SELECT employee_id
FROM V_EMPLOYEE
WHERE row_number() OVER ( ORDER BY employee_id ) > 0
ORDER BY Employee_ID
Run Code Online (Sandbox Code Playgroud) 任何人都可以解释为什么我们不能在group by子句中使用窗口函数以及为什么它只允许在SELECT和中使用ORDER BY
我试图根据row_number()SQL Server中的一个列对记录进行分组,如下所示:
SELECT Invoice
from table1
group by row_number() over(order by Invoice),Invoice
Run Code Online (Sandbox Code Playgroud)
我收到了一个错误
窗口函数只能出现在SELECT或ORDER BY中
我可以row_number()在SELECT子句中选择它,但我想知道为什么我们不能使用它分组?
考虑以下BigQuery查询:
SELECT
tn.object AS object_alias,
tn.attribute1 AS attribute1_alias,
tn.attribute2 AS attribute2_alias,
tn.score AS score_alias,
ROW_NUMBER() OVER (PARTITION BY attribute1_alias, attribute2_alias ORDER BY score_alias DESC) AS row_num_alias
FROM
[datasetName.tableName] tn
HAVING # also causes error when using WHERE
row_num_alias <= 20
Run Code Online (Sandbox Code Playgroud)
在此查询中,对子句中的row_num_alias字段的引用HAVING导致以下错误:Field 'row_num_alias' not found.使用HAVING子句替换子句时出现相同的错误WHERE,并且似乎所有窗口函数都抛出此错误.
这是BigQuery中的错误吗?或者我的查询中是否有其他错误?
可能相关:
一种解决方法是将其转换为子查询并将WHERE子句移到子查询之外(见下文),但这看起来很麻烦(并且希望不是必需的).
SELECT
object_alias,
attribute1_alias,
attribute2_alias,
score_alias,
row_num_alias
FROM
(SELECT
tn.object AS object_alias,
tn.attribute1 AS attribute1_alias,
tn.attribute2 AS attribute2_alias, …Run Code Online (Sandbox Code Playgroud)