如何获取PostgreSQL中特定行的最接近日期

布达巴布兰德

我有以下问题:

我有一个包含两种类型的数据的表。一个状态为1的状态,另一个状态为2的状态。对于状态为2的每一行,我都需要最后一个对应的状态为1的日期。这是一个示例:

date           state    id
'2016-04-03'   1        1
'2016-04-04'   1        1
'2016-04-05'   2        1
'2016-04-06'   2        1

预期结果:

date           lastdate       state    id
'2016-04-03'   '2016-04-03'   1        1
'2016-04-04'   '2016-04-04'   1        1
'2016-04-05'   '2016-04-04'   2        1
'2016-04-06'   '2016-04-04'   2        1
'2016-04-07'   '2016-04-07'   1        1

我不完全知道我被困在哪里。感觉到这种问题是您在寻找错误的方式,因此,我们将为您提供帮助。

提前谢谢!

编辑

看来我对问题的解释不够好,这是另一种尝试:

对于每一行,我需要具有状态= 1的具有相同ID的最后一行的日期。如果状态已经为1,则需要同一行的日期。

因此,为了澄清我的“预期结果”-表:

date           lastdate       state    id
'2016-04-03'   '2016-04-03'   1        1   

状态是1,所以行的日期是状态1的最后一个日期

'2016-04-04'   '2016-04-04'   1        1

状态是1,所以行的日期是状态1的最后一个日期

'2016-04-05'   '2016-04-04'   2        1

状态为2,因此日期为1的最后一行的日期来自之前的行

'2016-04-06'   '2016-04-04'   2        1

状态为2,状态为1的最后日期为'2016-04-04'

'2016-04-07'   '2016-04-07'   1        1

状态再次为1,所以相同的日期

'2016-04-08'    '2016-04-07'  2        1

状态为2,因此设置了最后一行(之前的行)的日期

我希望我的意图现在可以理解。

克林

这可以通过将表与其自身连接来实现:

select distinct on (a.date) 
    a.date date, 
    coalesce(b.date, a.date) last_date, 
    a.state, 
    a.id
from test a
left join test b 
on a.state = 2 and b.state = 1 and b.date < a.date
order by a.date, b.date desc;

    date    | last_date  | state | id 
------------+------------+-------+----
 2016-04-03 | 2016-04-03 |     1 |  1
 2016-04-04 | 2016-04-04 |     1 |  1
 2016-04-05 | 2016-04-04 |     2 |  1
 2016-04-06 | 2016-04-04 |     2 |  1
 2016-04-07 | 2016-04-07 |     1 |  1
(5 rows)

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从最接近日期的对象获取标题,django 模型

来自分类Dev

SQL获取其他表中特定日期的最接近行

来自分类Dev

如何为表中的特定行获取最接近的 n 行?

来自分类Dev

获取一组记录与给定日期的最接近日期

来自分类Dev

从列表中获取最接近的日期时间

来自分类Dev

查找工作日缺少的条目,并用最接近日期的值填充行

来自分类Dev

如何在没有子查询的情况下获得与最近日期行最接近的每一行日期字段的TIMEDIFF?

来自分类Dev

无论年份如何,都找到最接近日期的月日

来自分类Dev

按忽略年份的最接近日期对NSFetchedResultsController排序

来自分类Dev

R:最接近日期的匹配(效率问题)

来自分类Dev

SQL Server 查找最接近日期的班次开始(时间)

来自分类Dev

Python:获取具有最接近日期和相同大小的列表,以及包含日期和值的列表

来自分类Dev

获取最接近sysdate的日期

来自分类Dev

MySQL-获取最接近的日期并针对表中的每一行显示它

来自分类Dev

如何查询最接近的日期并显示特定数据

来自分类Dev

如何从数组对象获取最近或最接近的日期?

来自分类Dev

每半小时如何获取最接近的日期

来自分类Dev

Laravel 5.2从雄辩的集合中获取最接近的日期

来自分类Dev

Laravel 5.2从雄辩的集合中获取最接近的日期

来自分类Dev

日期功能可确定给定日期和日期的最接近日期

来自分类Dev

在R中的另一个数据框中选择日期最接近特定日期的行

来自分类Dev

如何使用一对一的关系从最接近的表中获取行?

来自分类Dev

给定日期和星期几,找到将来的最接近日期

来自分类Dev

在groupby数据框中找到给定日期的最接近日期(Python)

来自分类Dev

如何显示最接近所选日期的日期

来自分类Dev

SQL按日期获取最接近的值

来自分类Dev

在 Postgres 中,如何从表中选择最近日期的行?

来自分类Dev

如何获取最接近x的列表中的值的索引?

来自分类Dev

如何在PHP中的日期数组中从最接近的日期到最远的日期排序

Related 相关文章

  1. 1

    从最接近日期的对象获取标题,django 模型

  2. 2

    SQL获取其他表中特定日期的最接近行

  3. 3

    如何为表中的特定行获取最接近的 n 行?

  4. 4

    获取一组记录与给定日期的最接近日期

  5. 5

    从列表中获取最接近的日期时间

  6. 6

    查找工作日缺少的条目,并用最接近日期的值填充行

  7. 7

    如何在没有子查询的情况下获得与最近日期行最接近的每一行日期字段的TIMEDIFF?

  8. 8

    无论年份如何,都找到最接近日期的月日

  9. 9

    按忽略年份的最接近日期对NSFetchedResultsController排序

  10. 10

    R:最接近日期的匹配(效率问题)

  11. 11

    SQL Server 查找最接近日期的班次开始(时间)

  12. 12

    Python:获取具有最接近日期和相同大小的列表,以及包含日期和值的列表

  13. 13

    获取最接近sysdate的日期

  14. 14

    MySQL-获取最接近的日期并针对表中的每一行显示它

  15. 15

    如何查询最接近的日期并显示特定数据

  16. 16

    如何从数组对象获取最近或最接近的日期?

  17. 17

    每半小时如何获取最接近的日期

  18. 18

    Laravel 5.2从雄辩的集合中获取最接近的日期

  19. 19

    Laravel 5.2从雄辩的集合中获取最接近的日期

  20. 20

    日期功能可确定给定日期和日期的最接近日期

  21. 21

    在R中的另一个数据框中选择日期最接近特定日期的行

  22. 22

    如何使用一对一的关系从最接近的表中获取行?

  23. 23

    给定日期和星期几,找到将来的最接近日期

  24. 24

    在groupby数据框中找到给定日期的最接近日期(Python)

  25. 25

    如何显示最接近所选日期的日期

  26. 26

    SQL按日期获取最接近的值

  27. 27

    在 Postgres 中,如何从表中选择最近日期的行?

  28. 28

    如何获取最接近x的列表中的值的索引?

  29. 29

    如何在PHP中的日期数组中从最接近的日期到最远的日期排序

热门标签

归档