【发布时间】:2016-06-17 17:40:48
【问题描述】:
这是我的表 - PK 是(Con_num、版本、顺序):
Con_num version operation amount
15 1 A 1
15 1 B 2
15 1 C 3
15 2 A 4
15 3 A 5
15 3 B 6
15 4 C 7
- Con_num 是合同编号。
- version 是版本号。
- operation 只是一个操作的 ID。
- amount 是操作的数量。
我想知道每个版本的总金额。棘手的部分是:对于第 1 版,我只需要将金额相加。但是对于版本 2,我需要对版本 2 行求和(操作 = A)并从版本 1 中获取两行(操作!= A)。因此,对于版本 3,我将取版本 3 的两行,并且只取版本 1 中 operation = C 的行。任何新操作都会使之前版本中的操作无效。
结果将是:
Con_num version amount
15 1 6 (1 + 2 + 3)
15 2 9 (4 + 2 + 3)
15 3 14 (5 + 6 + 3)
15 4 18 (5 + 6 + 7)
我该怎么做?
【问题讨论】:
-
每个级别的规则似乎不一致。如果
version等于 4 会发生什么? 5个或6个怎么样? -
我看不出问题所在。我们应用相同的计算。只取每个订单的最后一个版本
-
您能否显示您想要的版本 4 或 5 的输出,以便更清楚地理解逻辑。因为这里与此示例规则似乎不一致
-
如果您的示例中的每个金额值都是唯一的,这可能会有所帮助,以便我们知道每个金额来自哪一行,正如您将在下面看到的那样,我认为我理解了 - 但显然没有
标签: oracle11g