Je pense que vous pouvez omettre de mettre à jour les colonnes "non souhaitées" en ajustant les autres réponses comme suit:
update table set
columnx = (case when condition1 then 25 end),
columny = (case when condition2 then 25 end)
Si je comprends bien, cela ne sera mis à jour que lorsque la condition sera remplie.
Après avoir lu tous les commentaires, c'est le plus efficace:
Update table set ColumnX = 25 where Condition1
Update table set ColumnY = 25 where Condition1
Exemple de tableau:
CREATE TABLE [dbo].[tblTest](
[ColX] [int] NULL,
[ColY] [int] NULL,
[ColConditional] [bit] NULL,
[id] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]
Exemple de données:
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)
Maintenant, je suppose que vous pouvez écrire un conditionnel qui gère les valeurs nulles. Pour mon exemple, je suppose que vous avez écrit un tel conditionnel qui donne la valeur True, False ou Null. Si vous avez besoin d'aide, faites-le moi savoir et je ferai de mon mieux.
Maintenant, exécuter ces deux lignes de code modifie en fait X à 25 si et seulement si ColConditional est True (1) et Y à 25 si et seulement si ColConditional est False (0)
Update tblTest set ColX = 25 where ColConditional = 1
Update tblTest set ColY = 25 where ColConditional = 0
PS Le cas nul n'a jamais été mentionné dans la question originale ou dans les mises à jour de la question, mais comme vous pouvez le voir, cette réponse très simple les gère quand même.