我在 Windows Server 2008 R2 下运行 PostgreSQL 9.1.9 x64 和 PostGIS 2.0.3。
我有一张桌子:
CREATE TABLE field_data.trench_samples (
pgid SERIAL NOT NULL,
trench_id TEXT,
sample_id TEXT,
from_m INTEGER
);
里面有一些数据:
INSERT INTO field_data.trench_samples (
trench_id, sample_id, from_m
)
VALUES
('TR01', '1000001', 0),
('TR01', '1000002', 5),
('TR01', '1000003', 10),
('TR01', '1000004', 15),
('TR02', '1000005', 0),
('TR02', '1000006', 3),
('TR02', '1000007', 9),
('TR02', '1000008', 14);
现在,我感兴趣的是找到记录的“from_m”和该trench_id 的“下一个”“from_m”之间的差异(在本例中以米为单位)。
因此,根据上面的数据,我想得到一个生成下表的查询:
pgid, trench_id, sample_id, from_m, to_m, interval
1, 'TR01', '1000001', 0, 5, 5
2, 'TR01', '1000002', 5, 10, 5
3, 'TR01', '1000003', 10, 15, 5
4, 'TR01', '1000004', 15, 20, 5
5, 'TR02', '1000005', 0, 3, 3
6, 'TR02', '1000006', 3, 9, 6
7, 'TR02', '1000007', 9, 14, 5
8, 'TR02', '1000008', 14, 19, 5
现在,您可能会说“等等,我们如何推断每行中最后一个样本的间隔长度,因为没有“下一个” from_m 可以比较?
对于行的“结束”(sample_id 1000004 和 1000008),我想使用前两个样本的相同间隔长度。
当然,我不知道如何在我当前的环境中解决这个问题。非常感激你的帮助。