我找不到这个特定于BigQuery的答案。基本上我希望能够在查询中计算ROW_NUMBER,然后使用基本数学运算符(加,减等)修改行号,而不使用子查询。
我知道以下代码有效,但对我来说,似乎没有必要使用子查询来附加基本的数学运算符
SELECT
id,
title,
language,
rn+5
FROM
(
SELECT
id,
title,
language,
ROW_NUMBER() OVER() AS rn
FROM [publicdata:samples.wikipedia] LIMIT 1000
)
但是,当我尝试添加没有子查询的加号时,我收到错误
SELECT
id,
title,
language,
ROW_NUMBER() OVER() +5 AS rn_offset,
FROM [publicdata:samples.wikipedia] LIMIT 1000
我在没有子查询的情况下尝试在BigQuery中做什么,或者我的语法是错误的?
谢谢, Onji
答案 0 :(得分:1)
这是BigQuery的遗留SQL的限制 - 如果不使用子选择,则无法组合各种计算。这很不幸,但此时不太可能改变。这只是许多人中的一个例子。
但是,您可以在没有子查询的standard SQL中执行此操作:
SELECT
id,
title,
language,
ROW_NUMBER() OVER() +5 AS rn_offset
FROM `publicdata.samples.wikipedia` LIMIT 1000
如果这样的限制在使用旧版SQL时烦人,我建议使用标准SQL。