问题描述
我正在将查询从teradata转换为Bigquery,并且我正在尝试将以下查询转换:
select 1234|| TRIM(CSUM(1,1)+ rowVal (FORMAT 'Z(17)9')) from schema.tableName
我无法获得(FORMAT'Z(17)9')的含义,并且我尝试使用以下语法实现相同的目的:
select 1234|| ROW_NUMBER() OVER (ORDER BY 1) FROM `bigquery-public-data.noaa_gsod.gsod194*`;
如何确保我的大查询结果也具有(FORMAT'Z(17)9'),以及如何在行号中添加rowVal
解决方法
CSUM
是传统语法(而(1,1)
确实效率很低)。您对ROW_NUMBER的翻译是正确的,BigQuery的FORMAT类似,应该为:
select 1234|| FORMAT("%18d",ROW_NUMBER() OVER (ORDER BY 1) + rowval)
如果有GROUP BY col
,则必须将其移至PARTITION BY
。