2017-11-10 230 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