考虑以下查询(标准语法):
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
的单行。
这是预期的行为吗?
最佳答案
可以通过将 _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
关于google-bigquery - 具有多个 _TABLE_SUFFIX 条件的嵌套查询出现意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47231947/