You need to know which dates are relevent for each item ...
DECLARE @m TABLE (ItemId INT, MaxDate DATE)
insert into @m SELECT ItemId, MAX(PriceUpdateDate) FROM @TB WHERE PriceUpdateDate < @FromDate GROUP BY ItemId
and then you can do something if no records are returned from your original query
if exists (select top 1 * from @TB where PriceUpdateDate between @FromDate and @ToDate)
select * from @TB where PriceUpdateDate between @FromDate and @ToDate
else
select T1.* from @TB T1 INNER JOIN @M T2 ON T1.ItemId = T2.ItemId AND T1.PriceUpdateDate = T2.MaxDate