如何在SQL Server中使用迭代?

时间:2017-09-06 09:23:11

标签: sql sql-server sql-server-2016

我需要向每位信贷顾问寻找他/她的区域经理。

我们的网络如下:

CREATE INDEX ON a (id);

我试过了:

CareerSystemPositionId  CareerSystemPositionCode_Primary    PositionShortcut    OriginalPositionShortcut    PositionShortcutTranslationId   
2   -1  PM  PM  30  Profi Manager 
3   0   RM  RM  31  Region Manager
4   1   AM  AM  32  Area Manager 
5   2   TM  TM  33  Team Leader
6   3   CAS ÚPS 34  Senior Credit Advisor 
7   4   CA  ÚP  35  Senior Credit

任何帮助都将不胜感激。

提前致谢

1 个答案:

答案 0 :(得分:0)

您需要将源指定为递归表表达式,然后从中选择所需的数据

WITH CA AS 
(
    SELECT
        ca.CreditAdvisorId AS CA_ID,
        ca.CreditAdvisorCode_Primary AS CA_Code,
        ca.CreditAdvisorParentID AS ParentID,
        ca.CareerSystemPositionId AS PositionID,
        ca.ClosestManagerId AS CloseManID
    FROM 
        dim.CreditAdvisor ca
    WHERE 
        ca.CreditAdvisorId = @CA_id --nenacitame vsechny zaznamy

    UNION ALL

    SELECT
        dca.CreditAdvisorId AS CA_ID,
        dca.CreditAdvisorCode_Primary AS CA_Code,
        dca.CreditAdvisorParentID AS ParentID,
        dca.CareerSystemPositionId AS PositionID,
        dca.ClosestManagerId AS CloseManID
    FROM 
        dim.CreditAdvisor dca
    JOIN CA ON dca.CreditAdvisorId = CA.ParentID
    WHERE
        CA.PositionID <= 4
)
SELECT
    ca.CA_ID AS AM_Id
    ca.CA_Code AS AM_code
FROM
    CA ca
WHERE
    ca.PositionId = 4;