如何用有序数字替换列中的字符串?

时间:2019-04-25 22:28:42

标签: google-bigquery

我有下表:

CityNamesZip5Plus4

===========================

Zip5    Plus4   CityName
===========================
36067   1500    Prattville
36067   1501    Prattville
36067   1502    Prattville

48085   3614    Troy
48085   3629    Troy
48085   3640    Troy
48085   3641    Troy

需要用从1开始的数字替换CityName

所以表看起来像这样:

CityNameNumberZip5Plus4

===========================

Zip5    Plus4   CityNameNumber
===========================
36067   1500    1
36067   1501    1
36067   1502    1

48085   3614    2
48085   3629    2
48085   3640    2
48085   3641    2

CityName-> CityNameNumber对应关系应在单独的表中:CityNamesNumbers

问题是如何生成CityNamesNumbers表并使用它 生成CityNameNumberZip5Plus4?

1 个答案:

答案 0 :(得分:1)

以下是用于BigQuery标准SQL

  

如何生成CityNamesNumbers表...

#standardSQL
CREATE OR REPLACE TABLE `project.dataset.CityNamesNumbers` AS
SELECT CityName, ROW_NUMBER() OVER() CityNameNumber 
FROM `project.dataset.CityNamesZip5Plus4`
GROUP BY CityName   
  

...并使用它生成CityNameNumberZip5Plus4?

#standardSQL
CREATE OR REPLACE TABLE `project.dataset.CityNameNumberZip5Plus4` AS
SELECT x.* EXCEPT(CityName), CityNameNumber
FROM `project.dataset.CityNamesZip5Plus4` x
JOIN `project.dataset.CityNamesNumbers` y
USING(CityName)