我正在编写一个查询,该查询创建两个表的联合的聚合,但我需要联合的第二个表来处理一些列(总和),我不确定这样做的确切方法。这不是存储过程的一部分,因此没有变量。详情如下:
select t.col1, t.col2, t.col3 FROM (
select d.col1, d.col2, d.col3 FROM table1 d
join another_table
on ...
join different table
on ...
UNION ALL
select a.col1, a.col2, a.col3 FROM table2 a
join another_table
on ...
join different table
on ...
WHERE
/*datetime restricitons */
) t
所以这就是问题所在:表 a 和表 d 中的 col3 是相同的数据,除了表 b 中它是一个总值,每个新添加的行都是根据前一行计算的。(我无法控制这些表)。
在联合之后,表 a 中的 30 左右额外的行被添加到表 d 中的行的末尾,唯一的问题是表 a 不是累积值,它本身就是每行。
理想情况下,在联合期间,我想取表 d 的 col3 值中的最后一行,然后从表 a 添加的第一行将是表 d 的 col3 中的 val +/- 表 a 的 col3 中的值。
我希望我对此进行了充分的解释,我知道有办法做到这一点,我只是不确定如何应用它。
以下是两个物理表的示例,以及输出聚合的外观和应该是什么样的:
表d:
表一:
输出表:REDISH 行来自表 d,而 BLUE 来自表 a。