【问题标题】:Updating date field with min date from selected dates if they are >= to current_date, except when all dates are >= to current date如果所选日期 >= 到 current_date,则使用最小日期更新日期字段,除非所有日期 >= 到当前日期
【发布时间】:2021-01-16 17:19:08
【问题描述】:

我想更新 Date1 列的内容以反映每一行中最旧的日期,除非日期已经过去(Date1

ID Date 1 Date 2 Date 3 Date 4
001 01/14/2022 01/14/2022 01/15/2022 01/16/2022
002 04/15/2019 04/15/2019 01/10/2021 01/10/2021

我正在使用

    update mytable t
    set date1 = (
        select min(date)
        from (values (date2), (date3), (date4)) d(dt)
        where dt >= current_date    
)

我遇到的唯一问题是 所有 可用日期早于当前日期。在这种情况下,它会用 null 覆盖 date1 列中的值,这并不理想。我希望查询在这些情况下保持 date1 字段不变。

【问题讨论】:

  • 请告诉我们更多关于您使用的软件的信息? Postgres 和 SQL?
  • 是的,我在 PgAdmin 4 中使用 PostgreSQL。

标签: postgresql sql-update


【解决方案1】:

想通了:

   update mytable t
    set date1 = coalesce ((
        select min(date)
        from (values (date2), (date3), (date4)) d(dt)
        where dt >= current_date    
), date 1);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    相关资源
    最近更新 更多