【发布时间】:2016-11-03 19:36:57
【问题描述】:
我有这样的桌子
ID_WE ID_B ID_WO RDATA RSIZE
11111 22 1 1998-10-01 14
11111 22 2 1998-09-30 17
11111 23 1 1998-10-01 23
11112 22 1 1998-09-30 14
ID_WE、ID_B 和 ID_WO 一起是主键。对于每个组合 id-we, id_b 都很少有 ID_WO。每个ID_WO都有很多reads,reads信息在RDATA和RSIZE
我需要这样取表
ID_WE ID_B ID_WO DAYS DIF
11111 22 1 1 0
DIF 是给定ID_WO 的最后两次读取之间RSIZE 的差异,
DAYS 是最后两次读取之间经过了多少天
它可能需要一些 group by 和 max(rdata) 来计算天数和大小的差异。我真的迷失了如何获得这样的结果。我将不胜感激如何获得所需结果的任何提示。
【问题讨论】:
-
ID_WE 和 ID_B 不能一起作为主键,因为有这样的重复。
-
哪个 Firebird 版本?使用 Firebird 3 可能比使用早期版本更容易。顺便说一句:鉴于示例数据,我不明白为什么
DAYS的值是 780 而DIF的值是 6。 -
@Mark Rotteveel-Fierbird 2.1,你说得对,应该是 1 天 0 差异
-
@jarlh 我的错误应该是 ID_WE 和 ID_B 和 ID_WO 是主键
-
所以...对于给定的 ID_WE+ID_B,随着 ID_WO 增加,RDATA 日期减少?在您的数据中,11111-22-1 是在 1998 年 10 月 1 日读取的,但 11111-22-2 是在 1998 年 9 月 30 日读取的?对吗?
标签: sql firebird firebird2.1