1
나는 Oralce 11g의에서 다음 CTE 쿼리를하려고 해요,하지만 난오라클 CTE 쿼리 : 데이터 형식 오류 ORA-00932
ORA-00932를 말하는 오류 얻을 : 일관성없는 데이터 유형을 : 예상 번호는 CHAR을 얻었다.
어떤 아이디어가 근본 원인입니까? 당신이 level1
에 대한 값으로 0을 사용하는 쿼리의 첫 번째 부분을 변경하는 경우
create table PC (
EMP_ID NUMBER NULL,
MGR_ID NUMBER NULL
);
INSERT INTO PC (EMP_ID, MGR_ID)
VALUES (1.0, NULL);
INSERT INTO PC (EMP_ID, MGR_ID)
VALUES (2.0, 1.0);
INSERT INTO PC (EMP_ID, MGR_ID)
VALUES (3.0, 1.0);
INSERT INTO PC (EMP_ID, MGR_ID)
VALUES (4.0, 2.0);
INSERT INTO PC (EMP_ID, MGR_ID)
VALUES (5.0, 2.0);
INSERT INTO PC (EMP_ID, MGR_ID)
VALUES (6.0, 2.0);
INSERT INTO PC (EMP_ID, MGR_ID)
VALUES (7.0, 3.0);
INSERT INTO PC (EMP_ID, MGR_ID)
VALUES (8.0, 5.0);
INSERT INTO PC (EMP_ID, MGR_ID)
VALUES (9.0, 7.0);
INSERT INTO PC (EMP_ID, MGR_ID)
VALUES (10.0, 5.0);
INSERT INTO PC (EMP_ID, MGR_ID)
VALUES (11.0, 7.0);
INSERT INTO PC (EMP_ID, MGR_ID)
VALUES (12.0, 9.0);
INSERT INTO PC (EMP_ID, MGR_ID)
VALUES (13.0, 9.0);
INSERT INTO PC (EMP_ID, MGR_ID)
VALUES (14.0, 9.0);
SELECT * FROM pc;
with Tree (EMP_ID, MGR_ID, lv, level1, level2, level3, level4, level5) as
(
SELECT EMP_ID
, MGR_ID
, 1 as lv
, 1 as level1
, null as level2
, null as level3
, null as level4
, null as level5
FROM PC
WHERE MGR_ID IS NULL
UNION ALL
SELECT E.EMP_ID
, E.MGR_ID
, T.lv + 1
, case when T.lv + 1 = 1 then E.EMP_ID else T.level1 end
, case when T.lv + 1 = 2 then E.EMP_ID else T.level2 end
, case when T.lv + 1 = 3 then E.EMP_ID else T.level3 end
, case when T.lv + 1 = 4 then E.EMP_ID else T.level4 end
, case when T.lv + 1 = 5 then E.EMP_ID else T.level5 end
FROM Tree T inner join PC E
ON (T.EMP_ID = E.MGR_ID)
)
select *
from Tree
당신이 널 (null)로 등'level1'의 그 초기 값을 하시겠습니까보기? 0으로 변경하면 쿼리가 작동하는 것처럼 보입니다.이 데모를보십시오. http://sqlfiddle.com/#!4/dac35/1 – Taryn
감사합니다. 문제가 해결되었으므로 가능한 답으로 만들 수 있습니까? 받아들이시겠습니까? – jrara
"레벨 2로 캐스팅 (null로 숫자)"등을 사용할 수도 있습니다. –