Sql 基于用户参数筛选bigquery中的行

Sql 基于用户参数筛选bigquery中的行,sql,google-bigquery,Sql,Google Bigquery,我有以下示例表: 信息 县 状态 信息1 索诺玛 加利福尼亚 信息2 弗雷斯诺 加利福尼亚 信息3 湖 加利福尼亚 信息5 湖 佛罗里达州 我建议对参数使用structs: SELECT ST_UNION_AGG(t.Info) as counties_info FROM `project.dataset.table` t WHERE EXISTS (SELECT 1 FROM UNNEST(@county_states) cs WHERE

我有以下示例表:

信息 县 状态 信息1 索诺玛 加利福尼亚 信息2 弗雷斯诺 加利福尼亚 信息3 湖 加利福尼亚 信息5 湖 佛罗里达州
我建议对参数使用structs:

SELECT ST_UNION_AGG(t.Info) as counties_info
FROM `project.dataset.table` t
WHERE EXISTS (SELECT 1
              FROM UNNEST(@county_states) cs
              WHERE cs.county = t.county AND cs.state = t.state
             );

我建议对参数使用structs:

SELECT ST_UNION_AGG(t.Info) as counties_info
FROM `project.dataset.table` t
WHERE EXISTS (SELECT 1
              FROM UNNEST(@county_states) cs
              WHERE cs.county = t.county AND cs.state = t.state
             );
你可以简单地使用

select ...
from `project.dataset.table`
where (State, County) in unnest(@state_county_pairs)   
上面假设您的
@state\u country\u pairs
参数是一个state、country对数组,如下面的脚本所示

declare state_county_pairs array<struct<State string, Country string>> ;
set state_county_pairs =  [
  struct('California' as State, 'Sonoma' as County),
  struct('Florida', 'Lake')
];

select *
from `project.dataset.table`
where (State, County) in unnest(state_county_pairs)    
其输出结合了这两个县的地理信息,如下所示

您只需使用

select ...
from `project.dataset.table`
where (State, County) in unnest(@state_county_pairs)   
上面假设您的
@state\u country\u pairs
参数是一个state、country对数组,如下面的脚本所示

declare state_county_pairs array<struct<State string, Country string>> ;
set state_county_pairs =  [
  struct('California' as State, 'Sonoma' as County),
  struct('Florida', 'Lake')
];

select *
from `project.dataset.table`
where (State, County) in unnest(state_county_pairs)    
其输出结合了这两个县的地理信息,如下所示