Credo che tu possa omettere l'aggiornamento delle colonne "non desiderate" modificando le altre risposte come segue:
update table set
columnx = (case when condition1 then 25 end),
columny = (case when condition2 then 25 end)
A quanto ho capito, questo si aggiornerà solo quando la condizione sarà soddisfatta.
Dopo aver letto tutti i commenti, questo è il più efficiente:
Update table set ColumnX = 25 where Condition1
Update table set ColumnY = 25 where Condition1
Tabella di esempio:
CREATE TABLE [dbo].[tblTest](
[ColX] [int] NULL,
[ColY] [int] NULL,
[ColConditional] [bit] NULL,
[id] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]
Dati di esempio:
Insert into tblTest (ColX, ColY, ColConditional) values (null, null, 0)
Insert into tblTest (ColX, ColY, ColConditional) values (null, null, 0)
Insert into tblTest (ColX, ColY, ColConditional) values (null, null, 1)
Insert into tblTest (ColX, ColY, ColConditional) values (null, null, 1)
Insert into tblTest (ColX, ColY, ColConditional) values (1, null, null)
Insert into tblTest (ColX, ColY, ColConditional) values (2, null, null)
Insert into tblTest (ColX, ColY, ColConditional) values (null, 1, null)
Insert into tblTest (ColX, ColY, ColConditional) values (null, 2, null)
ora presumo che sia possibile scrivere un condizionale che gestisce i valori nulli. Per il mio esempio, presumo che tu abbia scritto un tale condizionale che restituisce True, False o Null. Se hai bisogno di aiuto con questo, fammelo sapere e farò del mio meglio.
Ora l'esecuzione di queste due righe di codice cambia infatti X in 25 se e solo se ColConditional è True (1) e Y in 25 se e solo se ColConditional è False (0)
Update tblTest set ColX = 25 where ColConditional = 1
Update tblTest set ColY = 25 where ColConditional = 0
PS Il caso nullo non è mai stato menzionato nella domanda originale o in eventuali aggiornamenti alla domanda, ma come puoi vedere, questa risposta molto semplice li gestisce comunque.