Я уменьшил его с помощью перекрестного обращения, чтобы получить правильную цену для данной даты. Это, безусловно, сокращает ваш план выполнения, но, безусловно, выиграет от некоторой индексации.
Обратите внимание на псевдонимы таблиц, я использовал временные таблицы, поэтому я просто присвоил псевдониму то же имя, чтобы оно совпадало с вашим исходным запросом. :
CREATE TABLE #InvHist ([date] date, Item varchar(20),Amount int)
INSERT INTO #InvHist VALUES('01-31-16','NDS.09011012',12)
INSERT INTO #InvHist VALUES('02-29-16','NDS.09011012',11)
INSERT INTO #InvHist VALUES('03-31-16','NDS.09011012',8)
INSERT INTO #InvHist VALUES('04-30-16','NDS.09011012',6)
INSERT INTO #InvHist VALUES('05-31-16','NDS.09011012',6)
INSERT INTO #InvHist VALUES('06-30-16','NDS.09011012',32)
INSERT INTO #InvHist VALUES('07-31-16','NDS.09011012',32)
INSERT INTO #InvHist VALUES('08-31-16','NDS.09011012',28)
INSERT INTO #InvHist VALUES('09-30-16','NDS.09011012',26)
INSERT INTO #InvHist VALUES('10-31-16','NDS.09011012',26)
INSERT INTO #InvHist VALUES('11-30-16','NDS.09011012',23)
INSERT INTO #InvHist VALUES('12-31-16','NDS.09011012',21)
CREATE TABLE #PriceHist([date] date, Item varchar(20), Price int)
INSERT INTO #PriceHist VALUES('07-26-06','NDS.09011012',93894)
INSERT INTO #PriceHist VALUES('10-25-06','NDS.09011012',98119)
INSERT INTO #PriceHist VALUES('04-26-07','NDS.09011012',102828)
INSERT INTO #PriceHist VALUES('06-23-07','NDS.09011012',102599)
INSERT INTO #PriceHist VALUES('05-27-08','NDS.09011012',10701)
INSERT INTO #PriceHist VALUES('05-26-09','NDS.09011012',89649)
INSERT INTO #PriceHist VALUES('10-20-10','NDS.09011012',90783)
INSERT INTO #PriceHist VALUES('01-26-12','NDS.09011012',89991)
INSERT INTO #PriceHist VALUES('05-24-14','NDS.09011012',131496)
INSERT INTO #PriceHist VALUES('03-28-15','NDS.09011012',141873)
INSERT INTO #PriceHist VALUES('05-14-16','NDS.09011012',149738)
INSERT INTO #PriceHist VALUES('06-25-16','NDS.09011012',15318)
INSERT INTO #PriceHist VALUES('03-25-17','NDS.09011012',15459)
INSERT INTO #PriceHist VALUES('10-21-17','NDS.09011012',156352)
INSERT INTO #PriceHist VALUES('03-30-18','NDS.09011012',154869)
INSERT INTO #PriceHist VALUES('03-29-19','NDS.09011012',155154)
SELECT
InvHist.Date
,InvHist.Item
,InvHist.Amount
,PH.PriceDate
,PH.Price
,InvHist.Amount * PH.Price InvValue
FROM #InvHist InvHist
CROSS APPLY (SELECT TOP(1) MAX(date) PriceDate, Price
FROM #PriceHist PriceHist
WHERE InvHist.Item = PriceHist.Item and PriceHist.date <= InvHist.date
GROUP BY Price ORDER by PriceDate desc) PH