Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql BigQuery:检查其中一个重复ID的值,并将所有重复ID存储在新列中_Sql_Google Bigquery - Fatal编程技术网

Sql BigQuery:检查其中一个重复ID的值,并将所有重复ID存储在新列中

Sql BigQuery:检查其中一个重复ID的值,并将所有重复ID存储在新列中,sql,google-bigquery,Sql,Google Bigquery,我的数据有一个ID,然后是通过具有相同ID的行链接的不同数量的状态。我想创建一个新列,如果给定ID曾经是一个状态,则显示TRUE/FALSE,并将此信息附加到具有关联ID的所有行 初始数据示例: “' |身份|身份| ''''''''''''''''' |1 |国家1| |1 |国家2| |1 |国家2| |1 |状态3| |2 |国家2| |2 |状态3| |3 |国家2| |3 |状态3| |3 |状态1| | ...| ... |只需使用窗口功能: select t.*,

我的数据有一个ID,然后是通过具有相同ID的行链接的不同数量的状态。我想创建一个新列,如果给定ID曾经是一个状态,则显示TRUE/FALSE,并将此信息附加到具有关联ID的所有行

初始数据示例:

“'
|身份|身份|
'''''''''''''''''
|1 |国家1|
|1 |国家2|
|1 |国家2|
|1 |状态3|
|2 |国家2|
|2 |状态3|
|3 |国家2|
|3 |状态3|
|3 |状态1|

| ...| ... |只需使用窗口功能:

select t.*,
       (countif(state = 'state1') over (partition by id) > 0) as flag
from t;

下面是BigQuery标准SQL

#standardSQL
SELECT *, 
  MAX(status = 'state1') OVER(PARTITION BY ID) AS is_ever_state1
FROM table    
如果要应用于问题中的样本数据,则输出为

Row ID  status  is_ever_state1   
1   1   state1  true     
2   1   state2  true     
3   1   state2  true     
4   1   state3  true     
5   2   state2  false    
6   2   state3  false    
7   3   state2  true     
8   3   state3  true     
9   3   state1  true