Ввод пробы
Name | Value | Timestamp
-----|-------|-----------------
One | 1 | 2016-01-01 02:00
Two | 3 | 2016-01-01 03:00
One | 2 | 2016-01-02 02:00
Two | 4 | 2016-01-03 04:00
Желаемая Выходной
Name | Value | EarliestTimestamp | LatestTimestamp
-----|-------|-------------------|-----------------
One | 2 | 2016-01-01 02:00 | 2016-01-02 02:00
Two | 4 | 2016-01-01 03:00 | 2016-01-03 04:00
Покушение Запрос
Я пытаюсь использовать ROW_NUMBER()
и PARTITION BY
, чтобы получить последние Name
и Value
, но мне также понравятся самые ранние и последние Timestamp
значение:Получение первой и последней строки Использование ROW_NUMBER и PARTITION BY
SELECT
t.Name,
t.Value,
t.????????? AS EarliestTimestamp,
t.Timestamp AS LatestTimestamp
FROM
(SELECT
ROW_NUMBER() OVER (PARTITION BY Name ORDER BY TIMESTAMP DESC) AS RowNumber,
Name,
Value
Timestamp) t
WHERE t.RowNumber = 1
Обратите внимание, что этот запрос будет работать только тогда, когда 'value' растет во время. Если мы изменим значение «значение» от 1 до 10 в первой строке примера OPs - этот запрос приведет к неправильным результатам. – gofr1
@ gofr1 есть. то, что вы, вероятно, хотите использовать, это 'last_value (value) over (раздел по порядку имен по метке времени)' –