【发布时间】:2014-05-15 20:51:05
【问题描述】:
假设我们有以下格式和数据的 ORACLE 表:
TIMESTAMP MESSAGENO ORGMESSAGE
------------------------- ---------------------- -------------------------------------
27.04.13 1 START PERIOD
27.04.13 3 10
27.04.13 4 5
28.04.13 5 6
28.04.13 3 20
29.04.13 4 25
29.04.13 5 26
30.04.13 2 END PERIOD
30.04.13 1 START PERIOD
01.05.13 3 10
02.05.13 4 15
02.05.13 5 16
03.05.13 3 30
03.05.13 4 35
04.05.13 5 36
05.05.13 2 END PERIOD
我想选择按 MESSAGENO 分组的所有期间(START PERIOD 和 END PERIOD 之间的窗口)的所有 ORGMESSAGE 的总和。
示例输出为:
PERIOD START PERIOD END MESSAGENO SUM
------------ ------------- -------- ----
27.04.13 30.04.13 3 25
27.04.13 30.04.13 4 30
27.04.13 30.04.13 5 32
30.04.13 05.05.13 3 45
30.04.13 05.05.13 4 50
30.04.13 05.05.13 5 52
我猜想使用 ORACLE Analityc 函数是合适的,但真的不知道如何以及从哪里开始。 提前感谢您的帮助。
【问题讨论】:
-
请澄清。显然,您不要按 messageno 分组,因为结果列表中有重复的 messageno。
-
我想我知道您想做什么,但是您的输入数据中缺少某些内容。由于没有可靠的排序列,你怎么知道日期为 30.04.13 的哪一行是“第一”行?