Looking at your code, I cannot say what you should do.
The SQL engine will perform automatic conversions for comparison. However, if you decide to convert the character field to an integer, then you get an error.
So just enter your int field in nvarchar:
cast(IntField as nvarchar(255))
Length doesn't matter when comparing nvarchar() .
In your request, you replace:
ON dbo.pck_hdr.pack_num = dbo.STR_ShipTrack.Reference1
with:
ON cast(dbo.pck_hdr.pack_num as nvarchar(255)) = dbo.STR_ShipTrack.Reference1
source share