我有這種結構命名爲Pedidos
SQL Server表:期廣義更新查詢在SQL的日期列
每個月(在其最後的日子)我要運行這個查詢:
UPDATE PEDIDOS
SET PedFchAct = CONVERT(DATETIME, '2017-08-28 00:00:00', 102),
PrgFchAct = CONVERT(DATETIME, '2017-08-28 00:00:00', 102)
WHERE
(PedFecCap = CONVERT(DATETIME, '2017-09-01 00:00:00', 102))
UPDATE PEDIDOS
SET PedFchAct = CONVERT(DATETIME, '2017-08-29 00:00:00', 102),
PrgFchAct = CONVERT(DATETIME, '2017-08-29 00:00:00', 102)
WHERE (PedFecCap = CONVERT(DATETIME, '2017-09-02 00:00:00', 102))
UPDATE PEDIDOS
SET PedFchAct = CONVERT(DATETIME, '2017-08-30 00:00:00', 102),
PrgFchAct = CONVERT(DATETIME, '2017-08-30 00:00:00', 102)
WHERE
(PedFecCap > CONVERT(DATETIME, '2017-09-02 00:00:00', 102))
AND (PedFecCap <= CONVERT(DATETIME, '2017-09-30 00:00:00', 102))
這個想法是下面的,我必須在三個分區由PedFecCap
分割寄存器。
過濾日期爲:
- PedFecCap = 1/nextmonth/2017
- PedFecCap = 2/nextmonth/2017,和
- lastdayOfnextMonth/nextmonth/2017 < = PedFecCap> 2/nextmonth/2017
然後我必須更新PedFchAct和PrgFchAct,併爲每個過濾段設置當前月份的三個不同日期。例如:
爲PedFecCap = 1/nextmonth/2017,PedFchAct和PrgFchAct = 28/currentmonth/2017
爲PedFecCap = 2/nextmonth/2017,PedFchAct和PrgFchAct = 29/currentmonth/2017
對於lastdayOfnextMonth/nextmonth/2017 < = PedFecCap> 2/nextmonth/2017,PedFchAct和PrgFchAct = 30/currentmonth/2017
我需要概括這個查詢和消除固定值,所以每個月我只運行腳本,而不是重寫查詢。
這是本月的最佳選擇,但下個月它將會改變,而08和09(8月和9月)將分別爲09和10。這就是泛化的意義。 –