在bigquery中根据条件合并记录

Niv*_*ivi 2 sql google-bigquery

我有多个成员行,并希望通过优先考虑值“是”来根据两列的值合并它们。

Name | Status1  |  Status2
Jon  |  Yes     |  No
Jon  |  No      |  Yes
Run Code Online (Sandbox Code Playgroud)

我希望查询返回

Name | Status1 | Status2
Jon  |  Yes    |  Yes
Run Code Online (Sandbox Code Playgroud)

因此,如果该列有Yes一次,则必须为该Yes人分配,No否则必须分配。

Mik*_*ant 5

下面是 BigQuery 标准 SQL

#standardSQL
SELECT Name, MAX(Status1) AS Status1, MAX(Status2) AS Status2
FROM `project.dataset.table`
GROUP BY Name   
Run Code Online (Sandbox Code Playgroud)

您可以使用示例数据进行测试和使用

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 'Jon' Name, 'Yes' Status1, 'No' Status2 UNION ALL
  SELECT 'Jon', 'No', 'Yes' 
)
SELECT Name, MAX(Status1) AS Status1, MAX(Status2) AS Status2
FROM `project.dataset.table`
GROUP BY Name  
Run Code Online (Sandbox Code Playgroud)

结果

Row Name    Status1 Status2  
1   Jon     Yes     Yes  
Run Code Online (Sandbox Code Playgroud)