How can I use a CASE that will affect which column will be updated?
UPDATE TABLE1
CASE WHEN [Status] = 'Alpha' THEN AlphaStatus = Status
Using the solution here, I tried something like the following, but it only updates 1 column.
DECLARE @Table TABLE
(
ID int,
AlphaStatus varchar(10),
BetaStatus varchar(10),
GammaStatus varchar(10)
)
insert into @table (id) select 1
insert into @table (id) select 2
Declare @Values Table
(
ID varchar(20),
[Group] varchar(20),
[Status] varchar(20)
)
insert into @Values ( ID, [Group], [Status]) select 1, 'Alpha', 'ENABLED'
insert into @Values ( ID, [Group], [Status]) select 1, 'Beta', 'ENABLED'
insert into @Values ( ID, [Group], [Status]) select 1, 'Gamma', 'DISABLED'
insert into @Values ( ID, [Group], [Status]) select 2, 'Alpha', 'ENABLED'
insert into @Values ( ID, [Group], [Status]) select 2, 'Gamma', 'ENABLED'
insert into @Values ( ID, [Group], [Status]) select 2, 'Beta', 'ENABLED'
update @Table
set
AlphaStatus = (case when [Group] = 'Alpha' then [Status] else AlphaStatus end),
BetaStatus = (case when [Group] = 'Beta' then [Status] else BetaStatus end),
GammaStatus = (case when [Group] = 'Gamma' then [Status] else GammaStatus end)
from @Table t inner join @Values r
on r.id = t.ID
select *From @Table