我創建了2個表。一張桌子有4個字段。一個獨特的名字,一個日期和3位數字。第二個表包含相同的字段,但記錄合併函數的輸出。因此有一個更新或插入功能發生的日期。我想要做的是檢索兩天之間的差異或者兩天的總和來計算一天中該值的變化量。合併函數只在值更改或需要插入新值時更新。SQL隨時間變化查詢
到目前爲止,我有這個
select sum(Change_Table_1.Disk_Space) as total,
Change_Table_1.Date_Updated
from VM_Info
left join Change_Table_1
on VM_Info.VM_Unique = Change_Table_1.VM_Unique
where VM_Info.Agency = 'test'
group by Change_Table_1.Date_Updated
但這只是返回天更新總量的總和,而不是兩天之差。對這個問題的一個答案是將所有新記錄添加到表中,但這會包含一些重複項。所以在我的腦海中,我希望它做的是循環當天的數字,然後在第二天循環,但也包括所有未更新的值。對不起,如果我沒有解釋得很好。所以我想要實現的是隨着時間的推移總體上發生一些變化。如果它的設計很差,我也可以接受。
任何幫助,非常感謝。
也許這會解釋得更好。如果數值沒有改變,請告訴我第1天的總數,如果它發生了變化,請告訴我第2天的相同數值。等等......
好的,以便進一步闡述。
的Change_Table看起來像
vm date created action value_Field1 value_field_2 Disk_Space
abc 14/10/2013 insert 5 5 30
def 14/10/2013 insert 5 5 75
abc 15/10/2013 update 5 5 75
所以出來把我要的是第14屆總的最後一列是105。15日美國廣播公司已經從30改爲75,但不是招高清「T改變,但仍NEDS被包括給予150
所以輸出看起來像
date disk_Space
14/10/2013 105
15/10/2013 150
這就是所謂的滾動總值或滾動差值。 「def」在15日不存在,這意味着沒有變化,因此查詢應該包括以前的值。最好的方法是產生缺失的行,因爲它們存在。您將需要每個值的新列RunningTotal。並且遞歸CTE是該計算的途徑。一旦你運行任何給定日期的總價值,那麼它只是任何兩個日期的簡單加法或減法。試一下,如果需要的話會提供CTE查詢。休息很簡單,所以你可以做到。 –
謝謝大家的幫助。我已決定採用跑臺總表,並以1,7,14,28天的週期進行工作。這個項目的主要想法是得到一個......你有x增長,然後每增加一個變化需要收費。將閱讀遞歸CTE和回來,如果需要... – TXL