在我的数据库中,我有一个表必须从另一个表中的两个相邻行获取信息。
请允许我演示。有一个账单计算两个相邻米值之间的差异并相应地计算成本(即,我有一个水表,如果我想计算我应该在12月支付的金额,我取值我在11月测量并从12月份减去它。)
我的问题是,如何以最佳方式实现引用?我在考虑:
有更好的方法吗?非常感谢你。
答案 0 :(得分:2)
首先,关系数据库中没有“相邻”行。表表示无序集。如果您有订购的概念,则需要使用行中的数据来实现。我假设您有某种“id”或“创建日期”来指定排序。
因为您没有指定数据库,所以我假设您有一个支持ANSI标准窗口函数的功能数据库。在这种情况下,您可以使用LAG()
函数获得所需内容。获得之前抄表的语法如下:
select lag(value) over (partition by meterid order by readdatetime)
不需要数据重复或某些神秘的数据数据结构。 LAG()
也应该能够利用适当的索引。