Google bigquery “大查询”;其中,内部选择";-can';不加入或联合

Google bigquery “大查询”;其中,内部选择";-can';不加入或联合,google-bigquery,Google Bigquery,我得到: 查询: (L1:268): JOIN (including semi-join) and UNION ALL (comma, date range) may not be combined in a single SELECT statement. Either move the UNION ALL to an inner query or the JOIN to an outer query. 我做错了什么 谢谢。这是BigQuerySQL语法的限制,我将它改为 SELECT

我得到:

查询:

(L1:268): JOIN (including semi-join) and UNION ALL (comma, date range) may not be combined in a single SELECT statement. Either move the UNION ALL to an inner query or the JOIN to an outer query.
我做错了什么


谢谢。

这是BigQuerySQL语法的限制,我将它改为

SELECT   a                             AS a, 
         Count( DISTINCT b, 999999)    AS b, 
FROM     [dataset.partition_20121216], 
         [dataset.partition_20130115], 
         [dataset.partition_20130214] 
WHERE    created BETWEEN Timestamp('2013-01-05 00:00:00') AND      Timestamp ('2013-02-15 23:59:59.999999') 
AND      id IN  ( 
                SELECT id 
                FROM   [dataset.partition_20121216], 
                       [dataset.partition_20130115], 
                       [dataset.partition_20130214] 
                WHERE  created BETWEEN Timestamp('2013-01-05 00:00:00') AND    Timestamp ('2013-02-15 23:59:59.999999') 
                AND    name = 'G’ 
    ) 
GROUP each a 
ORDER BY a

我解决这个问题的方法是在连接中使用子查询,而不是在语法中使用where。类似于

SELECT   a                             AS a, 
         Count( DISTINCT b, 999999)    AS b, 
FROM     
  (SELECT * FROM 
     [dataset.partition_20121216], 
     [dataset.partition_20130115], 
     [dataset.partition_20130214]) 
WHERE    created BETWEEN Timestamp('2013-01-05 00:00:00') AND      Timestamp ('2013-02-15 23:59:59.999999') 
AND      id IN  ( 
                SELECT id 
                FROM   [dataset.partition_20121216], 
                       [dataset.partition_20130115], 
                       [dataset.partition_20130214] 
                WHERE  created BETWEEN Timestamp('2013-01-05 00:00:00') AND    Timestamp ('2013-02-15 23:59:59.999999') 
                AND    name = 'G’ 
    ) 
GROUP each a 
ORDER BY a
SELECT
  a,
  COUNT(b)
FROM (
  SELECT
    id,
    a,
    b
  FROM
    [dataset.partition_20121216],
    [dataset.partition_20130115],
    [dataset.partition_20130214]
  WHERE
    created BETWEEN TIMESTAMP('2013-01-05 00:00:00')
    AND Timestamp ('2013-02-15 23:59:59.999999') ) a
JOIN (
  SELECT
    DISTINCT id
  FROM
    [dataset.partition_20121216],
    [dataset.partition_20130115],
    [dataset.partition_20130214]
  WHERE
    created BETWEEN TIMESTAMP('2013-01-05 00:00:00')
    AND Timestamp ('2013-02-15 23:59:59.999999')
    AND name = 'G' ) b
ON
  b.id = a.id
GROUP BY
  a
ORDER BY
  a