采样输入
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和分区的第一个和最后一个行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'的时间成长。如果我们在OP的第一行示例中将'value'从1更改为10,则此查询将产生错误的结果。 – gofr1
@ gofr1是的。你可能想要使用的是'last_value(value)over(按时间戳命名的分区)' –