In your JOIN - you are using LIKE and since there are no wildcards it would be much better to use equal. In the WHERE clause you are also using LIKE - but again, no wildcards are specified. If you are looking for the Status = 'Pending' and not a Status that starts with 'Pending' then use an equal sign, but if (as I suspect) you want any status that has 'Pending' then you need:
Status Like '%Pending%'
But beware - that leading wildcards will not be able to utilize an index if one is available.
A couple more points:
1) Datetime data type includes the time - so this code is dependent on when it is run. You should - instead - set your variable to a midnight time which can be done like this: dateadd(day, datediff(day, 0, getdate()) - 7, 0)
2) You should use table aliases - and then use that alias when referencing columns.
DECLARE @DATETOCOMPARETO DATETIME = DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()) - 7, 0);
PRINT @DATETOCOMPARETO;
SELECT fil.FileId, fil.Filename, fil.Claim_id, clm.SubmittedOn
FROM dbo.Files fil
INNER JOIN dbo.Claims clm
ON clm.Id = fil.Claim_id
WHERE clm.Status LIKE 'Pending%' AND
(clm.SubmittedOn < @DATETOCOMPARETO OR clm.UpdatedOn < @DATETOCOMPARETO)
But - that presents a problem...because what if both SubmittedOn and UpdatedOn are more than 7 days ago?
I think you might need something like this:
WHERE ...
AND clm.SubmittedOn < @DATETOCOMPARETO
AND clm.UpdatedOn IS NULL
This assumes that what you are really looking for are unprocessed files - and that is indicated by an UpdatedOn column not being populated until after the file has been processed.