Google bigquery 我在大查询中运行多个查询,但在正确和结构化的输出中遇到问题

Google bigquery 我在大查询中运行多个查询,但在正确和结构化的输出中遇到问题,google-bigquery,Google Bigquery,我运行查询并获得答案编号中的输出。如果我分部分运行查询,它将返回3行,这是正确的 WITH query AS ( SELECT opt.answerNo AS ans, task.taskRaised.raisedAt.milliSeconds AS time FROM Test_2019_02_07 CROSS JOIN UNNEST(task.workflowInfo.answers) AS answer CR

我运行查询并获得答案编号中的输出。如果我分部分运行查询,它将返回3行,这是正确的

WITH query AS 
(
   SELECT
       opt.answerNo AS ans,
       task.taskRaised.raisedAt.milliSeconds AS time
   FROM
       Test_2019_02_07
   CROSS JOIN
       UNNEST(task.workflowInfo.answers) AS answer
   CROSS JOIN
       UNNEST(answer.options) AS opt
),
raw AS
(
    SELECT
        COUNTIF(query.ans  = 1 AND query.time BETWEEN 1550341800000 AND 1550341899999) AS ans1
    FROM
        query

    UNION ALL 

    SELECT
        COUNTIF(query.ans = 2 AND query.time BETWEEN 1550341800000 AND 1550341899999) AS ans1 
    FROM
        query

    UNION ALL 

    SELECT
        COUNTIF(query.ans = 3 AND query.time BETWEEN 1550341800000 AND 1550341899999) AS ans1
    FROM
        query 
),
raw1 AS
(
    SELECT
        COUNTIF(query.ans = 1 AND query.time BETWEEN 1548959400000 AND 1550341899999) AS ans2
    FROM
        query 

    UNION ALL 

    SELECT
        COUNTIF(query.ans = 2 AND query.time BETWEEN 1548959400000 AND 1550341899999) AS ans2
    FROM
        query 

    UNION ALL 

    SELECT
        COUNTIF(query.ans = 3 AND query.time BETWEEN 1548959400000 AND 1550341899999) AS ans2
    FROM
        query 
),
raw3 AS
(
    SELECT
        COUNTIF(query.ans = 1 AND query.time BETWEEN 1548959400000 AND 1550514699999) AS ans3
    FROM
        query 

    UNION ALL 

    SELECT
        COUNTIF(query.ans = 2 AND query.time BETWEEN 1548959400000 AND 1550514699999) AS ans3
    FROM
        query

    UNION ALL 

    SELECT
        COUNTIF(query.ans  = 3 AND  query.time BETWEEN 1548959400000 AND 1550514699999) AS ans3
    FROM
        query 
)
SELECT * 
FROM raw, raw1, raw3
当我跑的时候

SELECT * FROM raw
SELECT * 
FROM raw, raw1, raw3
它会回来的

0
0
0
跑步时

SELECT * FROM raw1
返回

1
1
3
3
1
1
跑步

SELECT * FROM raw3
返回

1
1
3
3
1
1
但是当我跑的时候

SELECT * FROM raw
SELECT * 
FROM raw, raw1, raw3
它将返回27行重复的数字

我想

ans1   ans2   ans3
-------------------
  0      1     3
  0      1     1 
  0      3     1
就这样,我不明白为什么它会返回我27行

当我运行这个

SELECT * 
FROM raw, raw1, raw3

默认情况下,如果我们在select查询中添加更多表,就可以了

在您的情况下,为了获得预期的输出,我们需要使用联接。因为我们没有任何公共列,所以可以向所有select查询添加
ROW\u NUMBER()
,并与该列联接

示例:

with
query1 as (select (ROW_NUMBER() OVER ()) as rn1, id as id1 from table1),
query2 as (select (ROW_NUMBER() OVER ()) as rn2, id as id2 from table2)

select * from query1 join query2 on query1.rn1=query2.rn2