以下為簡單例子...
表TableTest
,欄位Status1
存放Today,要更新Date1
為今天的時間;欄位Status2
存放Tomorrow,要更新Date2
為明天的時間。update的是同一個表TableTest
,但更新的欄位與條件不同,目前有嘗試過merge不適用,也沒找到其他方法,一般來說會分開寫,好奇是否有更好的寫法呢?
建立相關資料:
--創建表
create table [dbo].[TableTest](
[Id] int identity (1, 1)
, [Date1] nvarchar(4000)
, [Date2] nvarchar(4000)
, [Status1] nvarchar(4000)
, [Status2] nvarchar(4000)
)
--建立測試資料
insert TableTest (
[Date1], [Date2], [Status1], [Status2]
)
values
(null,null,'Today',null)
, (null,null,null,'Tomorrow')
--查詢表
select * from [TableTest]
update:
--
update TableTest
set Date1 = Getdate()
from TableTest
where Status1 = 'Today'
--
update TableTest
set Date2 = DATEADD(day,1, Getdate())
from TableTest
where Status2 = 'Tomorrow'
恩..合併?
update TableTest
set Date1 = (case when Status1 = 'Today' then Getdate() else null end)
, Date2 = (case when Status2 = 'Tomorrow' then DATEADD(day,1, Getdate()) else null end)
where (Status1 = 'Today' or Status2 = 'Tomorrow')