我有一個自引用表,像這樣的內容:自參照表
Self-referencing parent table
ID ParentID Name
---------------------
1 John
2 1 Mike
3 2 Erin
4 1 Janie
5 Eric
6 5 Peter
樹的層次結構應該是這樣的
- 約翰
- 邁克
- Erin
- 珍妮
- 邁克
- 埃裏克
- 彼得
和存儲父表的,看起來像這樣的樹葉子表:
ID Sales
3 100
3 100
4 200
4 200
6 300
6 300
6 300
我試圖將總和從葉節點上傳到層次結構,因此它將返回爲。 。
ID Name Sum
1 John 800
2 Mike 200
3 Erin 200
4 Janie 400
5 Eric 900
6 Peter 900
任何想法如何在SQL 2008中實現這一點?提前致謝。
感謝您的迴應,Dem。我收到了兩條錯誤消息:'GROUP BY,HAVING或聚合函數不允許在遞歸公用表表達式'flattend'的遞歸部分中使用GROUP BY,HAVING或聚合函數。''和'外部連接不允許在遞歸部分遞歸公用表表達式'flattend'。 '。有任何想法嗎? – Eric 2012-01-04 00:44:31
@Eric - 我太過於練習了,我甚至都不記得會是這樣。我已經重新編碼,所有的聚合都是在CTE之外完成的。 – MatBailie 2012-01-04 00:52:05
對於遲到的回覆感到抱歉,我不得不在昨天早些時候離開,而且我整個上午都在開會。查詢的作用像魅力。但是我很難理解CTE以及COALESCE功能的工作原理。我需要將ParentID列添加到結果中,以便我可以重建應用程序中的樹結構,但我一直得到不同的計數。你能多幫一點忙嗎?再次感謝。 – Eric 2012-01-04 19:53:49