0
我需要找到每個信用顧問他/她的區域經理。如何在SQL Server中使用迭代?
我們的網絡是這樣的:
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
我已經試過:
-- Iterate until encountering AM position ID
:WAY
;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
)
SET @CA_id = (SELECT ParentID FROM CA)
IF NOT (CA.PositionID <= 4) GOTO WAY;
-- Final function result
SELECT
IIF(ca.PositionID = 4, ca.CA_ID, 0) AS AM_Id, -- when no AM in a network, return 0
IIF(ca.PositionID = 4, ca.CA_Cod, 0) AS AM_code
FROM
CA ca
任何幫助,將不勝感激。
在此先感謝
你能得到所需要的輸出的例子嗎? – cdsln
SQL不是一種命令式語言。它處理表格值。你需要使用[遞歸](https://stackoverflow.com/questions/14274942/sql-server-cte-and-recursion-example) – Caleth