This commit is contained in:
PastSaid
2024-07-16 10:33:50 +08:00
parent e8a1f46c3d
commit fa480006a8
132 changed files with 20893 additions and 4519 deletions

View 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