For this type of question it is always a good idea to post CREATE TABLE statements for your tables together with INSERT statements with sample data, sufficiently to illustrate all angles of the problem. Finally, also provide the expected results from the sample data. This makes it easy to copy and paste into a query window to develop a tested solution.
Thus, what follows is entirely untested: One remark: the <something> that appears is a placeholder for a column in the input that you need to use as a tie-breaker if there are multiple entries for a supplier in the input that might have conflicting information.
MERGE dbo.suppllier s
USING (SELECT SupplierID, SupplierName, TinNo,
row_number() OVER(PARTITION BY SupplierID ORDER BY <something> DESC) AS rowno
FROM dbo.newfile) f ON f.SupplierID = s.SupplierID
AND f.rowno = 1
WHEN NOT MATCHED BY TARGET THEN
INSERT (SupplierID, SupplierNmae, TinNo)
VALUES(f.SupplierID, f.SupplierName, f.TinNo)
WHEN MATCHED AND NOT EXISTS (SELECT s.SupplierName, s.TinNo
INTERSECT
SELECT f.SupplierName, f.TinNo) THEN
UPDATE SET SupplierName = f.SupplierName,
TinNo = f.TinNo
;