Creo que puede omitir la actualización de las columnas "no deseadas" ajustando las otras respuestas de la siguiente manera:
update table set
columnx = (case when condition1 then 25 end),
columny = (case when condition2 then 25 end)
Según tengo entendido, esto se actualizará solo cuando se cumpla la condición.
Después de leer todos los comentarios, este es el más eficiente:
Update table set ColumnX = 25 where Condition1
Update table set ColumnY = 25 where Condition1
Tabla de muestra:
CREATE TABLE [dbo].[tblTest](
[ColX] [int] NULL,
[ColY] [int] NULL,
[ColConditional] [bit] NULL,
[id] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]
Datos de muestra:
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)
ahora supongo que puede escribir un condicional que maneje valores nulos. Para mi ejemplo, supongo que ha escrito un condicional que se evalúa como Verdadero, Falso o Nulo. Si necesita ayuda con esto, hágamelo saber y haré todo lo posible.
Ahora, al ejecutar estas dos líneas de código, de hecho cambia X a 25 si y solo si ColConditional es True (1) e Y a 25 si y solo si ColConditional es False (0)
Update tblTest set ColX = 25 where ColConditional = 1
Update tblTest set ColY = 25 where ColConditional = 0
PD: El caso nulo nunca se mencionó en la pregunta original ni en ninguna actualización de la pregunta, pero como puede ver, esta respuesta muy simple los maneja de todos modos.