2017-11-10 229 views
3

嵌套查詢意外的結果考慮下面的查詢(標準語法):與多個_TABLE_SUFFIX條件

WITH 
    v AS (
    SELECT 
    _TABLE_SUFFIX AS y, 
    * 
    FROM 
    `bigquery-public-data.noaa_gsod.gsod*` 
    WHERE 
    _TABLE_SUFFIX > '2000') 
SELECT 
    y, 
    COUNT(1) c 
FROM 
    v 
WHERE 
    y IN ('2016', 
    '2017') 
GROUP BY 
    y 

我期待它返回兩行:

2016 4292866  
2017 3683760 

然而,只有第一個返回。我覺得很奇怪。這有什麼理由嗎?

如果從子查詢中刪除WHERE _TABLE_SUFFIX > '2000',則按預期返回兩行。另外,如果您從底部的列表中刪除2016,則2017的單行將正確返回。

這是預期的行爲?

+1

這是一個錯誤!內部報告......謝謝! –

回答

0

一個人可以通過將_table_suffix轉換爲整數
可以解決這個問題,積分爲Przemek Iwańczak

WITH 
    v AS (
    SELECT 
    _TABLE_SUFFIX AS y, 
    * 
    FROM 
    `bigquery-public-data.noaa_gsod.gsod*` 
    WHERE CAST(_TABLE_SUFFIX as INT64) > 2000 
    ) 
SELECT 
    y, 
    COUNT(1) c 
FROM 
    v 
WHERE 
    y IN ('2016', 
    '2017') 
GROUP BY 
    y