如果我有一个表“table1”,列是:
EMAIL | USER_ID | START_DATE | CANCEL_DATE
如果有人注册我们的数据库,他们会出现一次。如果他们取消了他们的帐户,那么他们会再次出现并填充CANCEL_DATE - 这样两次。如果他们然后重新订阅,他们会出现3次,新记录会有一个新的START_DATE。
因此该表位于订阅而非帐户级别。
如果我想提取已取消的人的电子邮件地址和用户ID列表,并且自重新订阅后我不需要(以简单的英语):
我该怎么做?
如果是excel,我会针对取消日期列的最大开始日期进行vlookup。
希望我有意义吗?
我想我是通过子查询得到的。是一种更清洁的方式吗?
SELECT EMAIL, USER_ID FROM (
SELECT EMAIL, GUID, CANCEL_DATE
FROM table1
GROUP BY EMAIL, USER_ID, CANCEL_DATE
HAVING MAX(CONTRACT_EFFECTIVE_DATE) < MAX(SUBSCRIPTION_END_DATE)
) base1
WHERE SUBSCRIPTION_END_DATE < CURRENT_DATE
答案 0 :(得分:2)
START_DATE和CANCLE_DATE是互斥的,只有一个填充,另一个是NULL?
select email, user_id
from table1
group by email, user_id
having max(START_DATE) > max(CANCEL_DATE)
仅返回已取消并稍后再次订阅的有效订阅者。
修改强>
你似乎想要完全相反,你只需要改变条件:
select email, user_id
from table1
group by email, user_id
having max(START_DATE) < max(CANCEL_DATE)
这会返回所有当前已取消的订阅者。