我們的數據庫中有一些表幾乎無限增長,因此我們試圖創建定期(可能每天)彙總舊數據併除去彙總中包含的記錄的任務。如何在SQL Server中彙總一個表並將子表彙總爲正確引用SQL Server中彙總的父行
這只是使用GROUP BY很容易做到的。值得一提的是,子表也需要彙總,並引用他們所引用的新的完成父錶行,並且我不知道如何做到這一點,而不做一些真正的蹩腳的子查詢。
作爲一個例子說我開始與兩個表中的以下數據:
父表(ID是標識列)
ID Type Amount
-- ---- ------
1 1 10.00
2 1 3.00
3 3 8.00
4 3 9.00
子表
ParentID Thing Qty
-------- ----- ---
1 8 3
1 6 6
2 8 4
2 5 3
3 8 2
3 5 1
4 5 4
首先,我會將父表格彙總到根據類型分組的新行中,然後將這些金額彙總在一起,從而得出以下結果:
ID Type Amount
-- ---- ------
5 1 13.00
6 3 17.00
創建上述數據在家長的查詢將看起來像下面的查詢:
INSERT INTO Parent (Type, Amount)
SELECT Type, SUM(Amount) AS Amount
FROM Parent
GROUP BY Type
對於子表我想要做同樣的事情,除了由「物」的分組和總結帶有ParentID的數量引用與原始父對應的新創建的Parent。這將產生像下面這樣:
ParentID Thing Qty
-------- ----- ---
5 8 7
5 5 3
5 6 6
6 5 5
6 8 2
該查詢將類似於下面的東西,但我不知道如何讓PARENTID或如何鏈接到父表:
INSERT INTO Child (ParentID, Thing, Qty)
SELECT ?, Thing, SUM(Qty) AS Qty
FROM Child
INNER JOIN Parent
ON ? = ?
GROUP BY ?, Thing
我會認爲這是有點頻繁發生的事情,所以沒有人知道處理這種情況的正確方法是什麼?
Parent.Type和Child.Group是平等的?我的意思是它們被命名爲differentlt,但是它們是否引用了相同的內容? – NeedAnswers
可以檢查下面給出的查詢並回收 – Azar
Parent.Type和Child.Group不打算以任何方式相關。他們只是我編造的一些隨機數據。他們可以是任何價值。 –