Just because values contain digits does not mean that your variable is numeric.
If you use Proc Import or one of the widgets to read an external file then decisions as to what type of variable are based on the content of a very few rows of data. If in one file there happens to be text such as "unknown" in the data column then you may end up with character variables.
Run Proc Contents on both of the data sets used on the merge. I bet you will find that one version of the variable is numeric and the other is character.
When you encounter errors and want to ask about them best practice is to copy the entire code of a procedure or data step with all the notes, warnings and errors from the LOG and paste into a code box opened on the forum with the </>. The code box is important to preserve formatting of the text to preserve the position of the diagnostic characters that SAS often places in the log.