我有一個場景,我想從第二個表的多行更新多列第一個表。但是案例只是從第二個表格的第一行更新。在SQL Server中使用大小寫更新
有沒有使用光標達到此目的的任何幫助?
create table Table1 (ColA varchar(20), ColB varchar(20), ColC varchar(20))
insert into Table1 values (1, null, null)
create table Table2 (ColA varchar(20), ColB varchar(20), ColValue varchar(20))
insert into Table2 values (1, 2, 'X'), (1, 3, 'Y')
update Table1
set ColB = case
when T1.ColB = 2
then T1.ColValue
else T0.ColB
end,
ColC = case
when T1.ColB = 3
then T1.ColValue
else T0.ColC
end
from Table1 T0
inner join Table2 T1 on T0.ColA = T1.ColA
select * from Table1
綜觀結果,語句只更新ColB
這很簡單,但我將有12至20列,我需要根據其它表類型的設置值。爲每一列寫一個更新不是一個好主意。 –
@RAJUSAGI更新後顯示一條語句。這就是爲什麼它有助於在原始問題中包含所有相關細節:) – mendosi
感謝您的更新。我使用了相同的邏輯。問題在於第二個表本身是一個複雜的查詢條件。我用公用表表達式在這種情況下非常有幫助 –