Как получить несколько дочерних категорий из нескольких родительских категорий в базе данных SQL - PullRequest
0 голосов
/ 22 декабря 2018

В настоящее время я получаю категории расходов, имеющие несколько родительских категорий, с их дочерними категориями и так далее.Для этого я использовал общее табличное выражение для применения рекурсии, но не смог получить желаемый результат.

Это результат, который я получаю

   CId                Tit                    Par
 ----------------------------------------------------------------
 D61D6C22             Electricity Bill       NULL
 52113021             Wire Bill              D61D6C22
 E34B6F68             Wireless Bill          D61D6C22
 41A35796             B category Bill        52113021
 D063745A             A category Bill        52113021

Это запрос, который я использовал:

WITH cte1 AS 
(
    SELECT 
        Id AS [CId], Title as [Tit], ParentId as [Par],
        RN = ROW_NUMBER() OVER (ORDER BY Title)
    FROM 
        dbo.[ExpenseCategory] 
    WHERE
        ParentId IS NULL
    GROUP BY 
        Id, Title, ParentId

    UNION ALL

    SELECT 
        Id AS [CId], Title, ParentId, RN
    FROM 
        cte1
    INNER JOIN 
        dbo.[ExpenseCategory] ec ON cte1.[CId] = ec.ParentId
)
SELECT
    cte1.[CId], [Tit],[Par] 
FROM
    cte1   
ORDER BY
    RN ASC

   CId                Tit                    Par
 ----------------------------------------------------------------
 D61D6C22             Electricity Bill       NULL
 52113021             Wire Bill              D61D6C22
 41A35796             B category Bill        52113021
 D063745A             A category Bill        52113021
 E34B6F68             Wireless Bill          D61D6C22 
...