我在谷歌大查询中遇到一个错误,我没有成功找到解决方案。
我有两个表Airnow_dataset.adjustedTime_met_la_wind_letter
和Airnow_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
这是架构的图像:
答案 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