2017-07-18 69 views
0

我想結合3 + NOAA GSOD數據表來獲取數據在一個超級表中。我試圖將臺站表加入到結果數據中,然後按國家進行過濾。大查詢SQL。將表與相同的列(無PK)組合

我已經能夠做到這一點只是一個表,但沒有更多。以下是我嘗試修改代碼以實現此目的。我嘗試沒有成功:(幾個不同的修改

SELECT * FROM [bigquery-public-data:noaa_gsod.gsod2016] AS gsod2016, 
[bigquery-public-data:noaa_gsod.gsod2015] AS gsod2015 JOIN [bigquery-public- 
data:noaa_gsod.stations] AS stations ON gsod2016.stn = stations.USAF AND 
gsod2015.stn = stations.USAF WHERE stations.country = "CB" 

NOAA GSOD BigQuery資料: https://bigquery.cloud.google.com/table/bigquery-public-data:noaa_gsod.gsod2016

+0

您需要加入還是加入聯盟?也不要混合連接符號採用標準或使用符號或內部連接。和順序問題......除非它是按順序定義的,否則不能加入。 – xQbert

+0

我不完全確定你的意思是符號或內部連接。上面的代碼作爲一行代碼運行。例如。 SELECT * FROM [bigquery-public-data:noaa_gsod.gsod2016] AS gsod2016 JOIN [bigquery-public-data:noaa_gsod.stations] AS station ON gsod2016.stn = stations.USAF WHERE stations.country =「CB」 –

+0

gsod2016 has a它後面的逗號。與'join'組合使用時,這是非標準的連接語法。 – xQbert

回答

1

使用1標準內加入,或(優選內聯接語法),並確保這些表以正確的順序,除非其已在上面定義的,你不能在一個表連接。

SELECT * 
FROM [bigquery-public-data:noaa_gsod.stations] AS stations 
INNER JOIN [bigquery-public-data:noaa_gsod.gsod2016] AS gsod2016 
    ON gsod2016.stn = stations.USAF 
INNER JOIN [bigquery-public-data:noaa_gsod.gsod2015] AS gsod2015 
    ON gsod2015.stn = stations.USAF 
WHERE stations.country = "CB" 

現在,這一切說你真的是一個連接還是你想UNION ALL 日e數據,並添加一年

+0

嗨xQbert,這似乎遇到了無限的查詢。是的,我相信我確實需要聯盟。儘管BigQuery似乎無法識別該代碼。 –

+0

聯盟說它的支持... https://chartio.com/resources/tutorials/how-to-union-queries-in-google-bigquery/是同一數據類型的每個表的所有列嗎?您是否單獨選擇每個字段/列而不是使用*? – xQbert

+0

https://stackoverflow.com/questions/10644993/support-union-function-in-bigquery-sql它看起來像它的支持。 – xQbert