使用连续第二个最早的日期更新 table 列?
Updating a table column with the 2nd oldest date in a row?
我想更新日期 1 列的内容以反映每一行的第二大 日期。 table 有数千行和约 15 列,其中只有少数是日期。我过去使用最少的功能来用每一行中最旧的日期更新此列,但我不知道如何用第二个最旧的日期更新它(第 1 行和第 04 行为 1/15/2020/在这种情况下,第 2 行为 15/2020)。任何帮助将不胜感激。
ID
Date 1
Date 2
Date 3
Date 4
001
01/14/2020
01/15/2020
01/16/2020
002
04/15/2020
03/20/2020
06/16/2020
最简单的选择可能是逆轴旋转:
select t.*, d.date
from mytable t
cross join lateral (
select date
from (values (t.date2), (t.date3), (t.date4)) d(date)
order by d.date
limit 1 offset 1
) d
如果您想要一个 update
语句:
update mytable t
set date1 = (
select date
from (values (date2), (date3), (date4)) d(date)
order by d.date
limit 1 offset 1
)
我想更新日期 1 列的内容以反映每一行的第二大 日期。 table 有数千行和约 15 列,其中只有少数是日期。我过去使用最少的功能来用每一行中最旧的日期更新此列,但我不知道如何用第二个最旧的日期更新它(第 1 行和第 04 行为 1/15/2020/在这种情况下,第 2 行为 15/2020)。任何帮助将不胜感激。
ID | Date 1 | Date 2 | Date 3 | Date 4 |
---|---|---|---|---|
001 | 01/14/2020 | 01/15/2020 | 01/16/2020 | |
002 | 04/15/2020 | 03/20/2020 | 06/16/2020 |
最简单的选择可能是逆轴旋转:
select t.*, d.date
from mytable t
cross join lateral (
select date
from (values (t.date2), (t.date3), (t.date4)) d(date)
order by d.date
limit 1 offset 1
) d
如果您想要一个 update
语句:
update mytable t
set date1 = (
select date
from (values (date2), (date3), (date4)) d(date)
order by d.date
limit 1 offset 1
)