잘 작동하고 필요한 출력을 제공하는보기에 다음 코드가 있습니다.상위 레벨의 부모를 포함하는 cte 열을 추가하십시오.
;WITH ctesample
AS (SELECT sjob,
mjob,
mjob AS DisplayMJob,
groupf,
0 AS LVL
FROM dbo.vw_jobcosting_wipmastersub
WHERE (groupf = 'True')
UNION ALL
SELECT vw_JobCosting_WIPMasterSub_1.sjob,
vw_JobCosting_WIPMasterSub_1.mjob,
CASE S.lvl
WHEN 0 THEN S.sjob
ELSE S.displaymjob
END AS DisplayMJob,
vw_JobCosting_WIPMasterSub_1.groupf,
S.lvl + 1 AS Expr1
FROM ctesample AS S
INNER JOIN dbo.vw_jobcosting_wipmastersub AS
vw_JobCosting_WIPMasterSub_1
ON S.sjob = vw_JobCosting_WIPMasterSub_1.mjob
WHERE (vw_JobCosting_WIPMasterSub_1.groupf = 'False'))
SELECT sjob,
CASE
WHEN displaymjob IS NULL THEN sjob
ELSE displaymjob
END AS MJob,
groupf
FROM ctesample AS cteSample_1
I는 각 레코드에 대한 출력 MJob (안 SORCE 데이터 MJob)의 부모를주는 하나 개 이상의 항목을 추가 할 필요가있다.
소스 데이터 형식은 다음과 같습니다
╔═════════════════════════╗
║ SJob,MJob,GroupF ║
╠═════════════════════════╣
║ 10001000,NULL,True ║
║ 10001001,NULL,True ║
║ 10001002,NULL,True ║
║ 20001000,10001000,True ║
║ 20001001,10001001,True ║
║ 20001002,10001001,True ║
║ 20001003,10001002,True ║
║ 30001000,20001000,False ║
║ 30001001,20001000,False ║
║ 30001002,20001001,False ║
║ 30001003,20001002,False ║
║ 30001004,20001002,False ║
║ 30001005,20001003,False ║
║ 30001006,20001003,False ║
║ 30001007,30001000,False ║
║ 30001008,30001000,False ║
║ 30001009,30001001,False ║
║ 30001010,30001002,False ║
║ 30001011,30001002,False ║
║ 30001012,30001003,False ║
║ 30001013,30001004,False ║
║ 30001014,30001005,False ║
║ 30001015,30001006,False ║
║ 30001016,30001006,False ║
╚═════════════════════════╝
나는 그것을 해결하는 방법을 모르겠어요.
제안 사항을 크게 높이세요.
Sjob,Mjob,OutputMJob,GroupF
10001000,NULL,NULL,TRUE
10001001,NULL,NULL,TRUE
10001002,NULL,NULL,TRUE
20001000,10001000,NULL,TRUE
20001001,10001001,NULL,TRUE
20001002,10001001,NULL,TRUE
20001003,10001002,NULL,TRUE
30001000,20001000,10001000,FALSE
30001001,20001000,10001000,FALSE
30001002,20001001,10001001,FALSE
30001003,20001002,10001001,FALSE
30001004,20001002,10001001,FALSE
30001005,20001003,10001002,FALSE
30001006,20001003,10001002,FALSE
30001007,20001000,10001000,FALSE
30001008,20001000,10001000,FALSE
30001009,20001000,10001000,FALSE
30001010,20001001,10001001,FALSE
30001011,20001001,10001001,FALSE
30001012,20001002,10001001,FALSE
30001013,20001002,10001001,FALSE
30001014,20001003,10001002,FALSE
30001015,20001003,10001002,FALSE
30001016,20001003,10001002,FALSE
DB 구조에서 "출력 MJob의 상위"란 무엇을 의미합니까? – Szymon