我正在写一个查询,创建两个表的联合的聚合,但我需要联合的第二个表有一些列(总和)编辑,我不是确切地说,要做到这一点。这不是一个存储过程的一部分,所以没有变量。详情如下:SQL Server动态计算总和
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
因此,这是该问题:COL3在表a和d是相同的数据,除了在表B中它是一个总价值,与被计算的基于增加每个新行以前的。 (我无法控制这些表格)。
联合之后,来自表a的30行左右额外的行被添加到表d的行末尾,唯一的问题是表a不是累积值,而是它自己的每行。
理想情况下,在工会期间,我想要取出表格的col3值中的最后一行,然后从表格a添加的第一行应该是表格d'col3中的val +/-表格col3中的值一个。
我希望我充分解释这一点,我知道有一种方法可以做到这一点,我只是不知道如何应用它。
这里有两个物理表的例子,什么输出总量的样子,它应该是什么样子:
表d:
表:
输出表: REDISH行来自表d,而BLUE来自表a。
不知道我是否完全明白你的意思,但是我会因为这件事而快速而肮脏地受到诱惑。声明一个局部变量选择正确的值,然后在需要它的地方使用它。 – 2012-08-14 20:47:31
提示:相关的子查询...看到这个线程中的最后一个答案不完整的答案,但提示http://stackoverflow.com/questions/1153879/how-do-i-calculate-a-running-total-in-sql -without-use-a-cursor – ClearLogic 2012-08-14 20:47:35
你能提供一些示例数据和输出结果吗? – 2012-08-14 21:12:15