我有一个包含一些外键的表,我需要获取这些键何时更改的报告。
from | to | timestamp 1 | 2 | 0000 1 | 2 | 0001 1 | 2 | 0002 1 | 3 | 0003 1 | 3 | 0004 1 | 2 | 0005
SELECT from,to,FIRST(timestamp) FROM table GROUP BY from,to;
from | to | timestamp 1 | 2 | 0000 1 | 3 | 0003
我可以通过分组来获得前两个过渡,但它将第三个与第一个分组在一起,当它返回时我看不到它。
我想进行如下查询:
from | to | timestamp 1 | 2 | 0000 1 | 3 | 0003 1 | 2 | 0005
这可能吗?
最佳答案
在 PostgreSQL 8.4 中,您可以使用窗口函数 LAG访问上一行并比较它是否具有相同的“from”和“to”值:
SELECT "from", "to", timestamp
FROM
(
SELECT
"from",
"to",
timestamp,
LAG(("from", "to")) OVER (ORDER BY timestamp) AS prev
FROM Table1
) T1
WHERE ("from", "to") IS DISTINCT FROM prev
结果:
from to timestamp 1 2 0000 1 3 0003 1 2 0005
关于sql - 如何使用 postgres 中的窗口函数选择特定更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3764498/