如何根据另一列的日期条件更新列?

How to update a column based on date condition from another column?

这是我的初步测试table

IdRecord FechaRegistro IdDimFecCorte
1 2022-04-25 23:45:00.000 20220430
2 2022-04-24 18:07:00.000 20220430
3 2022-03-10 19:04:00.000 20220331
4 2022-03-22 16:55:00.000 20220331
5 2022-02-10 22:06:00.000 20220331
6 2022-02-14 02:06:00.000 20220331
7 2022-01-30 21:55:00.000 20220331

我需要 运行 在 table 中进行更新,因此 IdDimFecCorte 列显示基于日期的月份最后一天的日期(作为整数类型)来自 FechaRegistro 列。 如您所见,记录 1、2、3、4 已经满足此要求,但我需要追溯 运行 它(例如记录 5、6、7)

我想要的输出应该是

IdRecord FechaRegistro IdDimFecCorte
1 2022-04-25 23:45:00.000 20220430
2 2022-04-24 18:07:00.000 20220430
3 2022-03-10 19:04:00.000 20220331
4 2022-03-22 16:55:00.000 20220331
5 2022-02-10 22:06:00.000 20220228
6 2022-02-14 02:06:00.000 20220228
7 2022-01-30 21:55:00.000 20220131

db<>fiddle

也许你想这样做。

select IdRecord,FechaRegistro, CAST(REPLACE(EOMONTH(FechaRegistro),'-','') as INT) IdDimFecCorte from dbo.fact1Desired

如果你想全部更新。

UPDATE dbo.fact1Desired
    SET IdDimFecCorte = CAST(REPLACE(EOMONTH(dbo.fact1Desired.FechaRegistro),'-','') as INT)

如果你想在添加时自动添加。

INSERT dbo.fact1Desired(IdRecord,FechaRegistro,IdDimFecCorte)
VALUES (1, '20220425 23:45:00.000', CAST(REPLACE(EOMONTH('20220425 23:45:00.000'),'-','') as INT)),
       (2, '20220424 18:07:00.000', CAST(REPLACE(EOMONTH('20220424 18:07:00.000'),'-','') as INT)),
       (3, '20220310 19:04:00.000', CAST(REPLACE(EOMONTH('20220310 19:04:00.000'),'-','') as INT)),
       (4, '20220322 16:55:00.000', CAST(REPLACE(EOMONTH('20220322 16:55:00.000'),'-','') as INT)),
       (5, '20220210 22:06:00.000', CAST(REPLACE(EOMONTH('20220210 22:06:00.000'),'-','') as INT)),--
       (6, '20220214 02:06:00.000', CAST(REPLACE(EOMONTH('20220214 02:06:00.000'),'-','') as INT)),--
       (7, '20220130 21:55:00.000', CAST(REPLACE(EOMONTH('20220130 21:55:00.000'),'-','') as INT))--
;