This should be enough to UPDATE the udf table:
UPDATE udf
SET Value = CASE udf.fieldno WHEN 1 THEN udf1 WHEN 2 THEN udf2 WHEN 3 THEN udf3
WHEN 4 THEN udf4 WHEN 5 THEN udf5 END
FROM udf
INNER JOIN UserImport UI ON UI.userid = udf.userid
Full example:
use tempdb;
create table users
(
userid int,
firstname varchar(25),
lastname varchar(25),
middlename varchar(25)
);
insert into users values (1,'some','dude','big');
create table udf(userid int,fieldno int, value varchar(25));
insert into udf values (1,1,'123456');
insert into udf values (1,2,'text1');
insert into udf values (1,3,'01/01/2018');
insert into udf values (1,4,'Text2');
insert into udf values (1,5,'Text3');
create table userimport
(
userid int
,firstname varchar(25)
,lastname varchar(25)
,middlename varchar(25)
,udf1 varchar(25)
,udf2 varchar(25)
,udf3 varchar(25)
,udf4 varchar(25)
,udf5 varchar(25)
);
insert into userimport values(1,'some','dude','big','New1','New2','New3','New4','New5');
SELECT 'Before', * FROM udf
UPDATE udf
SET Value = CASE udf.fieldno WHEN 1 THEN udf1 WHEN 2 THEN udf2 WHEN 3 THEN udf3
WHEN 4 THEN udf4 WHEN 5 THEN udf5 END
FROM udf
INNER JOIN UserImport UI ON UI.userid = udf.userid
SELECT 'After', * FROM udf
drop table users
drop table udf
drop table userimport
SQL DBA,SQL Server MVP(07, 08, 09) A socialist is someone who will give you the shirt off *someone else's* back.