如何根据另一列的日期条件更新列?
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
也许你想这样做。
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))--
;
这是我的初步测试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 |
也许你想这样做。
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))--
;