BigQuery Case-对于col1,如果col 2等于“ a”和“ b”,则为True,否则= False

问题描述

我真的在这里语法上苦苦挣扎...

我正在尝试获取以下数据:

Col1  Col2
001   a
001   b
002   a
003   b
004   a

显示如下

Col1  Col2  Col3
001   a     True
001   b     True
002   a     False
003   b     False
004   a     False

我正在大量查询中,并且知道我的陈述不正确,但是正在查看以下内容

case
when Col1 is not null then
case 
    when Col2 = 'a' and Col2 = 'b' then "True"
else "False"
end
Duplicates

我确定问题出在第一个条件上,但无法弄清楚如何处理。 有人可以给我一些指示吗?

解决方法

以下是用于BigQuery标准SQL

while True:

    username = input("Enter your Username ")
    password = input("Enter your Password ")

如果要应用于示例中的示例数据-输出为

#standardSQL
SELECT *,2 = COUNT(DISTINCT IF(Col2 IN ('a','b'),Col2,NULL)) OVER(PARTITION BY Col1) AS Col3
FROM `project.dataset.table`   
,

假设您只有'a'和'b',则可以使用case和窗口函数:

select t.*
       ( (col2 = 'a' and countif(col2 = 'b') over (partition by col1) > 0 or
         (col2 = 'b' and countif(col2 = 'a') over (partition by col1) > 0
       ) as col3     
from t;