次のように他の回答を調整することで、「望ましくない」列の更新を省略できると思います。
update table set
columnx = (case when condition1 then 25 end),
columny = (case when condition2 then 25 end)
私が理解しているように、これは条件が満たされた場合にのみ更新されます。
すべてのコメントを読んだ後、これが最も効率的です。
Update table set ColumnX = 25 where Condition1
Update table set ColumnY = 25 where Condition1
サンプルテーブル:
CREATE TABLE [dbo].[tblTest](
[ColX] [int] NULL,
[ColY] [int] NULL,
[ColConditional] [bit] NULL,
[id] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]
サンプルデータ:
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)
nullを処理する条件を記述できると思います。私の例では、True、False、またはNullと評価される条件を記述したと想定しています。これについてサポートが必要な場合はお知らせください。最善を尽くします。
これらの2行のコードを実行すると、ColConditionalがTrue(1)の場合に限り、Xは25に変更され、ColConditionalがFalse(0)の場合のみ、Yは25に変更されます。
Update tblTest set ColX = 25 where ColConditional = 1
Update tblTest set ColY = 25 where ColConditional = 0
PSヌルのケースは、元の質問や質問の更新ではまったく言及されていませんでしたが、ご覧のとおり、この非常に単純な答えがとにかく処理します。