转置并填充日期范围内的缺失日期

时间:2019-10-08 21:58:27

标签: sql

首先,我要解决的主要问题是检查在给定日期有多少活跃产品的用户。

我的数据如下:

UserID        ActiveFrom       ActiveTo
1                2019-02-03       2019-03-05
2                2019-04-01       2019-04-30
1                2019-03-06       2019-04-04
3                2019-05-01       2019-05-31

我认为该解决方案可以选择所有ActiveFrom并与ActiveFrom合并,然后填写缺少的日期,使其看起来像这样:

UserID     ActiveOnDate
1              2019-02-03
1              2019-02-04
1              2019-02-05
And so on

然后我可以计算每个日期的所有UserID。但是我找不到查询来填写日期范围内缺少的日期。而且我也不知道这是否是“最简单”的解决方案。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果您的Date具有Date数据类型(而不是VARCHAR),则可以使用BETWEEN sql运算符 https://sql.sh/cours/where/between

SELECT count(*) FROM user WHERE [dateToTest] BETWEEN ActiveFrom AND ActiveTo;