Sql 红移-查找特定ID的标志出现的次数

Sql 红移-查找特定ID的标志出现的次数,sql,count,amazon-redshift,Sql,Count,Amazon Redshift,我有一些销售数据,显示是否为客户生成了账单。如果已生成票据,则标签为bill_generated的列返回“Y”,否则为空。我正在尝试查找至少已生成一张账单的客户列表。每个客户id可能有多行,如下所示: cust_id, bill_generated 001,NULL 001,Y 002,NULL 002,NULL 003,Y 谁能给我一些建议吗。我使用的是红移数据库。谢谢。请尝试下面使用group by并使用cluse select cust_id from tablename group b

我有一些销售数据,显示是否为客户生成了账单。如果已生成票据,则标签为bill_generated的列返回“Y”,否则为空。我正在尝试查找至少已生成一张账单的客户列表。每个客户id可能有多行,如下所示:

cust_id, bill_generated
001,NULL
001,Y
002,NULL
002,NULL
003,Y

谁能给我一些建议吗。我使用的是红移数据库。谢谢。

请尝试下面使用group by并使用cluse

select cust_id from tablename
group by cust_id 
having sum(case when bill_generated is null then 0 else 1 end)=1

在下面尝试使用group by并使用cluse

select cust_id from tablename
group by cust_id 
having sum(case when bill_generated is null then 0 else 1 end)=1

可以使用关联子查询

select * from t
           where exists (select 1 from t t1 
             where t1.bill_generated='Y' and t1.cust_id=t.cust_id
            )

可以使用关联子查询

select * from t
           where exists (select 1 from t t1 
             where t1.bill_generated='Y' and t1.cust_id=t.cust_id
            )

我认为这是最好的方法。但是
having
子句最好写为
count(bill\u generated)>0
。我认为这是最好的方法。但是
having
子句最好写为
count(bill\u generated)>0