Sql 红移-查找特定ID的标志出现的次数
我有一些销售数据,显示是否为客户生成了账单。如果已生成票据,则标签为bill_generated的列返回“Y”,否则为空。我正在尝试查找至少已生成一张账单的客户列表。每个客户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
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
。