为了简化我们的工作生活,我为计费系统编写了模块,使我们能够在设置免费数据库/DNS 记录并在计费软件中跟踪它们时轻松创建“产品”。不幸的是,这些是独立的条目,而不是我们包含这些服务的付费产品的子条目。
我现在意识到,我们仍然设置了数千个数据库/DNS 记录,而客户已经取消了其他付费服务。
我需要查询每个客户端的完整计费项目列表,如果他们有 A) 数据库 B) DNS 记录 C) 两者都有且没有其他活动服务,则终止它们。
我的问题只是逻辑上来说,我该怎么做?每个产品都有一个唯一的 ID,但我只是对如何检查这些条件一无所知。
你想要这样的东西吗?
select customerId
from customerproducts cp
group by customerId
having sum(case when product not in ('Database', 'DNS Record') then 1 else 0 end) = 0 and
sum(case when product in ('Database', 'DNS Record' then 1 else 0 end) > 0
这将返回所有仅拥有
'Database'
和 'DNS Record'
产品的客户。