Google bigquery 提取UNNEST()内部子查询的输出并传递到外部主查询

Google bigquery 提取UNNEST()内部子查询的输出并传递到外部主查询,google-bigquery,Google Bigquery,我很难从UNNEST()中的子查询中提取值 内部子查询提供给定列的不同值。 然后假设外部查询根据子查询中的每个输入列生成字符串 示例:内部查询输出有4个不同的值,如a1、a2、a3、a4 外部查询输出应该是多个字符串的串联,并作为 MAX(IF(KEY="a1", VALUE, null)) a1, MAX(IF(KEY="a2", VALUE, null)) a2, MAX(IF(KEY="a3", VALUE, null)) a3

我很难从UNNEST()中的子查询中提取值

内部子查询提供给定列的不同值。 然后假设外部查询根据子查询中的每个输入列生成字符串

示例:内部查询输出有4个不同的值,如a1、a2、a3、a4

外部查询输出应该是多个字符串的串联,并作为

MAX(IF(KEY="a1", VALUE, null)) a1, 
MAX(IF(KEY="a2", VALUE, null)) a2,
MAX(IF(KEY="a3", VALUE, null)) a3, 
MAX(IF(KEY="a4", VALUE, null)) a4
查询:

EXECUTE IMMEDIATE 
'''SELECT  ''' || ( STRING_AGG("MAX(IF(KEY = '" || x.value || " ', _KEY, NULL))  AS " || x.value ) ) || '''
FROM UNNEST((SELECT APPROX_TOP_COUNT( KEY, 5) FROM `project.dataset.table` )) x
'''

错误:查询错误:无法识别的名称:下面的x应执行此操作

EXECUTE IMMEDIATE 
'''SELECT  ''' || (
  SELECT STRING_AGG("MAX(IF(key = '" || x.key || "', value, NULL))  AS " || x.key ) 
  FROM `project.dataset.table` x
  JOIN UNNEST((SELECT APPROX_TOP_COUNT( key, 5) FROM `project.dataset.table` )) y
  ON x.key = y.value
  ) || '''
FROM `project.dataset.table`
'''

下面就可以了

EXECUTE IMMEDIATE 
'''SELECT  ''' || (
  SELECT STRING_AGG("MAX(IF(key = '" || x.key || "', value, NULL))  AS " || x.key ) 
  FROM `project.dataset.table` x
  JOIN UNNEST((SELECT APPROX_TOP_COUNT( key, 5) FROM `project.dataset.table` )) y
  ON x.key = y.value
  ) || '''
FROM `project.dataset.table`
'''

谢谢你的回复。有没有其他方法来解决这个问题,而不是三次调用表。我想要实现的输出也可以通过外部查询x来完成。UNNEST()内部子查询的输出不能用作外部查询的输入,而不放入join()否,这是唯一的方法!我想这回答了你的问题。请考虑表决并接受:O)谢谢答复。有没有其他方法来解决这个问题,而不是三次调用表。我想要实现的输出也可以通过外部查询x来完成。UNNEST()内部子查询的输出不能用作外部查询的输入,而不放入join()否,这是唯一的方法!我想这回答了你的问题。请考虑表决并接受:O)