iT邦幫忙

0

SQL 依時間狀態,某個時間後,後續時間點都為同個狀態

  • 分享至 

  • xImage

先附上資料樣貌
https://ithelp.ithome.com.tw/upload/images/20230301/201582526NWTngsVkD.png
在時間點202202時,狀態從01_normal更改成02_dpd03
語法要怎寫,讓202202後的資料都會是02_dpd03

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
實習工程師
iT邦新手 1 級 ‧ 2023-03-01 14:05:07

讓202202 " 後 "的資料都會是02_dpd03

20220201(含)以後的資料,改為 " 02_dpd03 " 。
(PS : 您的資料表型態我不太確定,我只能用猜的)

CREATE TABLE #TEMP (
	sort_vintage INT
	,data_date DATETIME
	,data_date_yyyy_mm VARCHAR(20)
	,flag VARCHAR(20)
)

INSERT INTO #TEMP (sort_vintage,data_date,data_date_yyyy_mm,flag) Values (1,'2021-10-31','2021-10','01_normal')
INSERT INTO #TEMP (sort_vintage,data_date,data_date_yyyy_mm,flag) Values (2,'2022-2-1','2022-2','01_normal')
INSERT INTO #TEMP (sort_vintage,data_date,data_date_yyyy_mm,flag) Values (2,'2022-2-5','2022-2','01_normal')
INSERT INTO #TEMP (sort_vintage,data_date,data_date_yyyy_mm,flag) Values (3,'2022-3-5','2022-3','01_normal')
INSERT INTO #TEMP (sort_vintage,data_date,data_date_yyyy_mm,flag) Values (4,'2022-4-5','2022-4','01_normal')
INSERT INTO #TEMP (sort_vintage,data_date,data_date_yyyy_mm,flag) Values (5,'2022-5-5','2022-5','01_normal')



UPDATE #TEMP SET flag = '02_dpd03' WHERE data_date >='2022/02/01'
SELECT * FROM #TEMP

DROP TABLE #TEMP

拍謝,後面才看到你用的資料庫 是 postgresql。
我是用 MS SQL的語法,您參考就好。

我要發表回答

立即登入回答