BigQuery向row_number()添加数字

时间:2017-11-16 14:47:35

标签: sql google-bigquery row-number

我是BigQuery的新手,我想问一下是否有可能使用Legacy SQL为row_number()函数设置起始编号。我试过这段代码:

SELECT
ROW_NUMBER() OVER(order by col1) + 20 AS xxx
From tb1

但它会返回此错误:

  

错误:在第2行第44栏遇到“”+“”+“”。期待:

任何答案都将不胜感激

谢谢!

2 个答案:

答案 0 :(得分:3)

如果您不熟悉BigQuery,强烈建议您从BigQuery Standard SQL开始

  

如果您愿意遵循此建议 - 以下将无需任何解决方法(例如在旧版sql中进行子选择)

#standardSQL
SELECT
  20 + ROW_NUMBER() OVER(ORDER BY col1) AS xxx
FROM `project.dataset.tb1`   

您可以使用以下虚拟数据进行上述测试/播放

#standardSQL
WITH `project.dataset.tb1` AS (
  SELECT 1 col1 UNION ALL
  SELECT 111 col1 UNION ALL
  SELECT 11 col1
)
SELECT
  col1, 20 + ROW_NUMBER() OVER(ORDER BY col1) AS xxx
FROM `project.dataset.tb1`  

输出为

col1    xxx  
1       21   
11      22   
111     23   

答案 1 :(得分:0)

您可以尝试使用()包装:

SELECT (ROW_NUMBER() OVER(order by col1)) + 20 AS xxx
From tb1;

如果不使用子查询:

SELECT s.xxx + 20 AS xxx
FROM ( SELECT ROW_NUMBER() OVER(order by col1) AS xxx
       From tb1) s