Как написать SQL-запрос, который будет выбирать последнюю рекомендацию от каждого аналитика для каждого запаса, как известно в определенную дату (например, 1/1/10). Например, если аналитик имеет несколько рейтингов, но max (rating_date) больше указанной даты, он все равно должен вернуть рейтинг на максимальную дату меньше указанной даты. Итак, в приведенном ниже случае в указанную дату 1/1/10 я все равно должен получить рейтинг для Джона от 6/9/09, а также значение для Смита по состоянию на 12/5/09.SQL-запрос с несколькими критериями
Вот структура данных:
Stock_Ticker, Analyst_Name, Rating_Date, Rating_Name
G, John, 6/9/09, Hold
G, John, 1/20/10, Sell
G, Smith, 12/5/09, Buy
Если я пытаюсь что-то вроде ниже SQL, я получаю только значение, если максимальная дата меньше указанной даты.
Select Analyst_Ratings.Stock_Ticker,
Analyst_Ratings.Analyst_Name,
Analyst_Ratings.Rating_Name
From Analyst_Ratings
Where Rating_Date In(
Select Max(Rating_Date)
From Analyst_Ratings
Where Rating_date <= '2010-01-01')
указать 'группу by' условия в вашем внутреннем запросе. –