1
This commit is contained in:
39
01.扩展/HandleUtils/sql/递归统计.sql
Normal file
39
01.扩展/HandleUtils/sql/递归统计.sql
Normal file
@@ -0,0 +1,39 @@
|
||||
WITH result (Id, ParentId, Category, Num)
|
||||
AS
|
||||
(
|
||||
SELECT 1, 0, '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>1', 0
|
||||
UNION ALL
|
||||
SELECT 2, 1, '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>1-1',10
|
||||
UNION ALL
|
||||
SELECT 3, 1, '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>1-2', 10
|
||||
UNION ALL
|
||||
SELECT 4, 3, '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>1-2-1', 5
|
||||
UNION ALL
|
||||
SELECT 5, 0, '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2', 5
|
||||
UNION ALL
|
||||
SELECT 6, 0, '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>3', 5
|
||||
UNION ALL
|
||||
SELECT 7, 6, '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>3-1', 5
|
||||
UNION ALL
|
||||
SELECT 8, 4, '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>1-2-1-1', 5
|
||||
),
|
||||
|
||||
CTE(Id, ParentId, Category, Path, Num)
|
||||
As
|
||||
(
|
||||
SELECT A.Id, A.ParentId, A.Category, CAST(A.Id As VARCHAR(MAX))+'->',A.Num
|
||||
FROM result A
|
||||
WHERE A.ParentId = 0
|
||||
UNION ALL
|
||||
SELECT B.Id, B.ParentId, B.Category,C.Path+CAST(B.Id As VARCHAR(MAX)) + '->', B.Num
|
||||
FROM result B
|
||||
INNER JOIN CTE c on C.Id = B.ParentId
|
||||
)
|
||||
--SELECT * FROM CTE
|
||||
SELECT C.Id,
|
||||
C.Category,
|
||||
SUM(C1.Num) AS Num
|
||||
FROM CTE AS C
|
||||
--<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><EFBFBD>ľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룺CHARINDEX
|
||||
INNER JOIN CTE AS C1 ON CHARINDEX(C.Path, C1.Path) = 1
|
||||
GROUP BY C.ID,C.Category
|
||||
Reference in New Issue
Block a user