微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL - 使用服务组合查找帐户

如何解决SQL - 使用服务组合查找帐户

提前道歉,绝对是 sql 新手,我不确定我的措辞是最好的。
我有一个表格,列出了帐户及其活动服务。例如,

帐户 Serviceid 服务名称
1111 00001 税务咨询
1111 00004 家庭保险
1112 00004 家庭保险
1111 00003 汽车保险
1111 00002 账单支付
1112 00001 税务咨询

我正在尝试查找具有以下内容的帐户:
税务咨询、账单支付和家庭保险

税务咨询、账单支付和汽车保险

所以他们需要有'00001'和'00002'和/或'00003'/'00004'
感谢您的帮助!

解决方法

您可以为此使用条件聚合。一个比较简洁的方法是:

select acct
from t
group by acct
having sum(case when serviceName = 'Tax Consulting' then 1 else 0 end) > 0 and
       sum(case when serviceName = 'Bill Pay' then 1 else 0 end) > 0 and
       sum(case when serviceName in ('Home Insurance','Auto Insurance') then 1 else 0 end) > 0;

如果你不想同时拥有保险和服务的账户不重复,那么你可以使用:

sum(case when serviceName in ('Home Insurance','Auto Insurance') then 1 else 0 end) = 1      

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。