在BigQuery中,ANY_VALUE
函数用于在GROUP BY查询中选择一个任意的非聚合列值。它不保证返回的值来自同一行。但是,在特定的情况下,可以通过使用MAX
或 MIN
函数来确保返回的值来自同一行。
以下是一个包含代码示例的解决方法:
WITH data AS (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY group_column ORDER BY ordering_column) AS row_num
FROM
your_table
)
SELECT
group_column,
MAX(IF(row_num = 1, non_aggregate_column, NULL)) AS any_value_column
FROM
data
GROUP BY
group_column
在上面的示例中,我们使用了ROW_NUMBER
窗口函数为每个分组的行分配了一个行号。然后,我们使用MAX
函数和条件语句来选择每个分组中的第一行的非聚合列值。
请将your_table
替换为你的表名,group_column
替换为你要分组的列名,ordering_column
替换为用于定义“第一行”的列名,non_aggregate_column
替换为你要选择的非聚合列名。
这样,你就可以确保返回的值来自同一行。