无法使用string_google大查询类型访问值的字段

时间:2018-02-09 00:43:36

标签: mysql google-bigquery

我在谷歌大查询中遇到一个错误,我没有成功找到解决方案。

我有两个表Airnow_dataset.adjustedTime_met_la_wind_letterAirnow_dataset.station_neighbour,前一个表中wind_direction列的值定义了后一个列的列名。

我用" case"用于引用另一个表的相应列的子句,但每次运行查询时都会出现错误

  

无法在[3:83]

的类型为字符串的值上访问字段pm_station

我想提一下station_neighbour中返回的行数是1,所以它不应该成为问题。此外,当我硬编码s.pm_station value时,它工作正常。我想问题是由于外部查询中的别名,但我不知道如何解决它。为了您的信息,我附上了表格的截图以及我的代码。

非常感谢任何帮助。

这是我的疑问:

SELECT s.pm_station, s.RH, (CASE 
                        WHEN s.wind_direction="W" then (SELECT ss.W FROM 
                       `Airnow_dataset.station_neighbour` ss 
                        WHERE ss.pm_station=s.pm_station ) 
                        ELSE "na" 
                        END) as neighbour_wind_direction
FROM `Airnow_dataset.adjustedTime_met_la_wind_letter` s

这是架构的图像:

enter image description here

1 个答案:

答案 0 :(得分:2)

问题是您的station_neighbour表格中有一个名为S的列,因此adjustedTime_met_la_wind_letter的外部别名会隐藏在CASE WHEN表达式中。要解决此错误,请使用其他别名,例如:

SELECT
  wind_letter.pm_station,
  wind_letter.RH,
  (CASE WHEN wind_letter.wind_direction="W" THEN (
       SELECT ss.W FROM 
       `Airnow_dataset.station_neighbour` ss 
       WHERE ss.pm_station=wind_letter.pm_station ) 
   ELSE "na" END) as neighbour_wind_direction
FROM `Airnow_dataset.adjustedTime_met_la_wind_letter` wind_letter