Seems, you need simplest version of
UPDATE
statement:
DECLARE @tmp1 TABLE(id int,pnum varchar(100),amount numeric(18,2),RecNo varchar(100))
DECLARE @tmp2 TABLE(id int,pnum varchar(100),amount numeric(18,2),RecNo varchar(100))
INSERT INTO @tmp1(id, pnum, amount, RecNo)
VALUES(1,'P1',100,'Rec1'), (2,'P2',100,'Rec2'), (3,'P1',100,'Rec3'),
(4,'P1',100,'Rec4'), (5,'P3',100,'Rec5')
INSERT INTO @tmp2(id,pnum,amount)
VALUES(1,'P1',100), (2,'P1',100), (3,'P1',100), (4,'P3',100)
UPDATE a
SET a.RecNo = b.RecNo
FROM @tmp2 a INNER JOIN @tmp1 b ON a.pnum = b.pnum
SELECT *
FROM @tmp2
Result:
id pnum amount RecNo
1 P1 100.00 Rec1
2 P1 100.00 Rec1
3 P1 100.00 Rec1
4 P3 100.00 Rec5