我正在寫一個查詢,創建兩個表的聯合的聚合,但我需要聯合的第二個表有一些列(總和)編輯,我不是確切地說,要做到這一點。這不是一個存儲過程的一部分,所以沒有變量。詳情如下: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