Teradata格式功能

问题描述

我正在将查询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