У меня следующий запрос. Я хочу получить список уникальных идентификаторов объектов со значением, ближайшим к указанной дате:
INSERT INTO @temp
(
[Object ID]
,[Waarde]
,[Kenmerk]
)
select DISTINCT PME.OBJECTID,
LEFT(PME.OBJECTSCORINGVALUE,LEN(PME.OBJECTSCORINGVALUE)-2),
'P3'
FROM PMEOBJECTSCORINGPOINTS PME
LEFT JOIN PMEOBJECTSCORINGHISTORY PMEH ON PME.OBJECTSCORINGHISTORYID = PMEH.OBJECTSCORINGHISTORYID
INNER JOIN(SELECT OBJECTSCORINGHISTORYID, MAX(DATE) DATE
FROM PMEOBJECTSCORINGHISTORY
WHERE DATE < DATEFROMPARTS(YEAR(getdate())-1, 12, 31)
GROUP BY OBJECTSCORINGHISTORYID) P3 ON PME.OBJECTSCORINGHISTORYID = P3.OBJECTSCORINGHISTORYID
AND PMEH.DATE = P3.DATE
AND PME.ATTRIBUTEID = 'Energie-idx'
AND PME.OBJECTSCORINGVALUE <> ''
------------------
select * from @temp
order by [Object ID], [Kenmerk] ASC
Когда определенный идентификатор объекта имеет только одно известное значение до 2019-12-31, я получаю одну запись в набор результатов. Однако, если идентификатор объекта имеет два (или более) известных значения до этой даты, я все равно получу несколько результатов вместо значения для даты, ближайшей к 2019-12-31.
Любые указатели о том, как получить желаемые результаты? Заранее спасибо!
(редактировать: извините за плохую читабельность кода, спасибо за исправление)