如何解决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 举报,一经查实,本站将立刻删除。