如何考虑报告月份在另一个表中的条目,根据注册时间对记录进行分组?

墨芝

我有一个表A,其中有一个与帐户关联的注册时间,每个id只能有一个条目。

对于表A中存在的所有ID,将在表B中有类似状态的条目,如下所示

在此处输入图片说明

预期转换表

对于表A中的每个ID如果有对应一个ID条目存在于已注册的时候的月表B中-想要将其归类为新的该报告的一个月。同样,如果表B的后续月份中没有对应的ID条目,则希望将其分类为New。

例如:

ID 111 ~ Registered in November 2020 => Table B has no entries for ID 111 => Transformed table has an entry for ID 111 for the november month with state New.
ID 112 ~ Registered in November 2020 => Table B has entries for ID 112 in the month of November => Transformed table has no entry for ID 112
ID 113 ~ Registered in November 2020 => Table B has entries for ID 113 starting December => Transformed table has an entry for ID 113 for the november month with state New.
ID 114 ~ Registered in November 2020 => Table B has entries for ID 114 starting Feb 2021 => Transformed table has an entry for ID 114 for the months of november,December,Jan month with state New.

在此处输入图片说明

GMB

If I am following this correctly, you can use generate_series() and a lateral join:

select a.id, 'new' state, s.dt
from tablea a
cross join lateral (
    select generate_series(
        date_trunc('month', a.registered_time), 
        coalesce(
            date_trunc('month', min(b.time)) - interval '1 month', 
            date_trunc('month', a.registered_time)
        ),
        '1 month'
    )
    from tableb b
    where b.id = a.id
) s(dt)

The trick lies in the generation of the argument to generate_series(): if there is at least one entry available in b, we generate the date series from the beginning of the month of the registered time of a until the prior month to the earliest date in b; in case there is a date in b in the same month as in a, this generates an empty range, and the original row is filtered out. Else, we fall back on the registered time as end of range (which generates a range made of a single date).

Demo on DB Fiddle:

id | 州| dt-                  
:| :---- | :------------------ 
111 | 2020-11-01 00:00:00 
113 | 2020-11-01 00:00:00 
114 | 2020-11-01 00:00:00 
114 | 2020-12-01 00:00:00 
114 | 2021-01-01 00:00:00

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何按时间序列将一个数据表中的条目与另一个数据表进行匹配?

来自分类Dev

如何按时间序列将一个数据表中的条目与另一个数据表进行匹配?

来自分类Dev

如何获取更新语句以根据另一个表中的条目更改值

来自分类Dev

根据另一个数据框的值对数据框条目进行分组

来自分类Dev

如何根据来自另一个表的信息在表中插入新记录?

来自分类Dev

如何根据表单中的条目从另一个数据库表中获取任何列条目?

来自分类Dev

如何根据另一个表中的平均值对SQL表进行排序

来自分类Dev

如何根据另一个表中的索引序列对列中的名称进行排序?

来自分类Dev

根据另一个表中的记录值将记录插入表中

来自分类Dev

根据另一个表中记录的值将记录插入表中

来自分类Dev

根据另一个表中的条目从表中查询数据

来自分类Dev

如何更新另一个表中的记录

来自分类Dev

如何根据另一个表的条目数更新表

来自分类Dev

以时间间隔对年龄进行分组以使用 r 中的另一个变量创建列联表

来自分类Dev

如何在子查询聚合中的最近时间记录的另一个表中查找记录

来自分类Dev

根据另一个表中的记录过滤一个表中的记录

来自分类Dev

如何在另一个表中的条目之后找到表中的下一个条目?

来自分类Dev

MS-Access 2016 - 根据另一个表中的记录更新记录

来自分类Dev

根据另一个表中的条件选择表中的记录?

来自分类Dev

根据最新记录更新另一个表

来自分类Dev

如何根据另一个表的值删除一个表中的行

来自分类Dev

对记录在另一个表中的票数符合条件的记录进行计数

来自分类Dev

对记录在另一个表中的投票满足条件的记录进行计数

来自分类Dev

如何通过与另一个表的id列进行比较来更新表中的记录?

来自分类Dev

SQL:如何根据另一个表中的值查询一个表中是否存在记录

来自分类Dev

如何根据R中的另一个数据框条目替换空白?

来自分类Dev

根据另一个表(部门)中的值从一个表(产品)中提取记录

来自分类Dev

根据另一个表的“相似”值从一个表中检索记录

来自分类Dev

根据另一个表中的数据对过滤后的表进行排序

Related 相关文章

  1. 1

    如何按时间序列将一个数据表中的条目与另一个数据表进行匹配?

  2. 2

    如何按时间序列将一个数据表中的条目与另一个数据表进行匹配?

  3. 3

    如何获取更新语句以根据另一个表中的条目更改值

  4. 4

    根据另一个数据框的值对数据框条目进行分组

  5. 5

    如何根据来自另一个表的信息在表中插入新记录?

  6. 6

    如何根据表单中的条目从另一个数据库表中获取任何列条目?

  7. 7

    如何根据另一个表中的平均值对SQL表进行排序

  8. 8

    如何根据另一个表中的索引序列对列中的名称进行排序?

  9. 9

    根据另一个表中的记录值将记录插入表中

  10. 10

    根据另一个表中记录的值将记录插入表中

  11. 11

    根据另一个表中的条目从表中查询数据

  12. 12

    如何更新另一个表中的记录

  13. 13

    如何根据另一个表的条目数更新表

  14. 14

    以时间间隔对年龄进行分组以使用 r 中的另一个变量创建列联表

  15. 15

    如何在子查询聚合中的最近时间记录的另一个表中查找记录

  16. 16

    根据另一个表中的记录过滤一个表中的记录

  17. 17

    如何在另一个表中的条目之后找到表中的下一个条目?

  18. 18

    MS-Access 2016 - 根据另一个表中的记录更新记录

  19. 19

    根据另一个表中的条件选择表中的记录?

  20. 20

    根据最新记录更新另一个表

  21. 21

    如何根据另一个表的值删除一个表中的行

  22. 22

    对记录在另一个表中的票数符合条件的记录进行计数

  23. 23

    对记录在另一个表中的投票满足条件的记录进行计数

  24. 24

    如何通过与另一个表的id列进行比较来更新表中的记录?

  25. 25

    SQL:如何根据另一个表中的值查询一个表中是否存在记录

  26. 26

    如何根据R中的另一个数据框条目替换空白?

  27. 27

    根据另一个表(部门)中的值从一个表(产品)中提取记录

  28. 28

    根据另一个表的“相似”值从一个表中检索记录

  29. 29

    根据另一个表中的数据对过滤后的表进行排序

热门标签

归档