首页 > 解决方案 > 为用户提取多个日期条目

问题描述

我有一个表,标题示例:userid、product、product2、activation_day、deactivation_day

我如何提取所有用户,比如说,他们有不同的activation_days 和不同的deactivation_days。因为该用户激活了他的产品,假设在 21012021 上,然后在 21032021 上停用他的产品,然后它回来并在 01052021 上激活他的产品,现在它是一个活跃的客户。所以对他来说 deactivation_day 是 31122099。

基本上我想要以下输出:

userid, product, product2, activation_day, deactivation_day 
1xx1    aa       aa2       21012021        21032021
1xx1    aa       aa2       01052021        31122099

标签: sqlsql-server

解决方案


我怀疑您真正要求的是拥有相同两种产品但在时间段上有差距的用户。

假设您的日期实际上存储为日期,一种方法使用exists

select t.*
from t
where exists (select 1
              from t t2
              where t2.userid = t.userid and
                    t2.product = t.product and
                    t2.product2 = t.product2 and
                    (t2.activation_day > t.deactivation_day or
                     t2.deactivation_day < t.activation_day
                    );

推荐阅读