Мне нужно выбрать 3 самых последних уникальных строки по RelationShipId (так что их дубликатов нет) с той, у которой метка времени ближе всего к выбранной сегодня.
У меня есть запрос, который выглядит сейчас, но он не работает.
Я получаю: недопустимо в списке выбора, поскольку оно не содержится ни в статистической функции, ни в предложении GROUP BY.
Сценарий, который у меня пока есть:
SELECT * FROM PlayerAction
WHERE [ActionType] = 'SomeString' AND [RelationShipType] = 'SomeString' AND [PlayerId] = 5 AND [Deleted] = 0
GROUP BY RelationShipId
ORDER BY [TimeStamp] DESC
OFFSET 1 ROWS
FETCH NEXT 3 ROWS ONLY
SampleData
{
PlayerId=5
ActionType="SomeString"
RelationShipType="SomeString"
RelationShipId=1
TimeStamp=2019-07-04 07:45:47.400
Deleted=0
}
{
PlayerId=5
ActionType="SomeString"
RelationShipType="SomeString"
RelationShipId=2
TimeStamp=2019-07-03 14:29:10.530
Deleted=0
}
{
PlayerId=5
ActionType="SomeString"
RelationShipType="SomeString"
RelationShipId=3
TimeStamp=2019-07-03 13:56:26.057
Deleted=0
}
представьте, что существует примерно 5 строк с одинаковым RelationShipId, бесконечным количеством RelationShipIds. Я хочу, чтобы первые 3 уникальные строки были выполнены TimeStamp. Три последних PlayerActions сделали