書名 價格 生效日 生效截止日
A 1.2 2017-04-1 2017-05-01
A 1.3 2017-05-01 2017-06-01
A 1.4 2017-06-01 null
B 1.2 2017-04-1 2017-05-01
B 1.3 2017-05-01 2017-06-01
B 1.4 2017-06-01 null
想同時把書名A,B的最后記錄的生效日更新為2017-05-01,同時上一條的截止日更新為2017-05-01
如下:
A 1.2 2017-04-1 2017-05-01
A 1.3 2017-05-01 2017-05-01
A 1.4 2017-05-01 null
B 1.2 2017-04-1 2017-05-01
B 1.3 2017-05-01 2017-05-01
B 1.4 2017-05 -01 null
null每本書的最后1條記錄,把每本書的最后1條的生效日和倒數第2條生效截止日,更新為2017-05-01,
請教大家如何寫更新SQL,謝謝。
uj5u.com熱心網友回復:
UPDATE TEST2 T1
SET T1.E_DT = '20170501'
WHERE EXISTS (SELECT 1
FROM (SELECT NAME, MAX(E_DT) MX_DT FROM TEST2 GROUP BY NAME) T2
WHERE T1.NAME = T2.NAME
AND T1.E_DT = T2.MX_DT);
UPDATE TEST2 T1
SET T1.S_DT = '20170501'
WHERE EXISTS (SELECT 1
FROM (SELECT NAME, MAX(S_DT) MX_DT FROM TEST2 GROUP BY NAME) T2
WHERE T1.NAME = T2.NAME
AND T1.S_DT = T2.MX_DT);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/97860.html
標籤:開發
上一篇:同一個運算式,在select中可以查詢出來,放在where條件里就報無效數字
下一篇:sqlload選擇性匯入資料
