check this
declare @History table (Id varchar(50),Name varchar(50))
declare @Header table (docId int,Name varchar(50))
insert into @History(id,name)values( 'id', 'a')
insert into @History(id,name)values( '2', 'a')
insert into @Header(docId,name)values( '2', 'a1')
insert into @Header(docId,name)values( '2', 'b1')
select * from ( (SELECT * FROM @History where ISNUMERIC(id) =1 ) hi INNER JOIN @Header he ON hi.id = he.docId )
use
ISNUMERIC (Transact-SQL)[
^] to check the value is a valid number or not