[SQLD -03] ★DECODE★CROSS JOIN★
2023. 3. 12. 20:23
728x90
반응형
1. DECODE
CREATE TABLE 조직 (조직ID VARCHAR2(12) , 조직명 VARCHAR2(16));
CREATE TABLE 영업고객 (고객번호 NUMBER , 고객구분코드 VARCHAR2(3) , 담당조직ID VARCHAR2(4));
INSERT INTO 조직 (조직ID, 조직명) VALUES ('0tjq' ,'강남 본점');
INSERT INTO 조직 (조직ID, 조직명) VALUES ('wzqf' ,'영등포 지점');
INSERT INTO 조직 (조직ID, 조직명) VALUES ('m1gk' ,'신촌 지점');
INSERT INTO 조직 (조직ID, 조직명) VALUES ('hyao' ,'을지로 지점');
INSERT INTO 영업고객 (고객번호, 고객구분코드 , 담당조직ID) VALUES (1 ,'A1' , '0tjq');
INSERT INTO 영업고객 (고객번호, 고객구분코드 , 담당조직ID) VALUES (2 ,'A1' , 'wzqf');
INSERT INTO 영업고객 (고객번호, 고객구분코드 , 담당조직ID) VALUES (3 ,'A1' , 'wzqf');
INSERT INTO 영업고객 (고객번호, 고객구분코드 , 담당조직ID) VALUES (4 ,'B1' , 'm1gk');
INSERT INTO 영업고객 (고객번호, 고객구분코드 , 담당조직ID) VALUES (5 ,'B1' , NULL);
INSERT INTO 영업고객 (고객번호, 고객구분코드 , 담당조직ID) VALUES (6 ,'A1' , NULL);
SELECT A.고객번호, A.고객구분코드 , B.조직명
FROM 영업고객 A, 조직 B
WHERE B.조직ID = DECODE(A.고객구분코드 , 'B1' , '0tjq' , A.담당조직ID)
ORDER BY A.고객번호;
==> A.고객구분코드가 'B1' 이면 '0tjq' return , 아니면 A.담당조직 ID 출력
==> B.조직 ID ==> 고객구분코드가 B1 이면 담당조직 ID 0tjq , A1이면 wzqf, m1gk 출력
1 A 1 강남본점
2 A1 영등포지점
3 A1 영등포지점
4 B1 강남본점
5 B1 강남본점
2. CROSS JOIN
SELECT * FROM 조직 A CROSS JOIN 영업고객 B
WHERE B.담당조직ID = A.조직ID
3. LEFT OUTER JOIN
SELECT * FROM 조직 A LEFT OUTER JOIN 영업고객 B
ON B.담당조직ID = A.조직ID
4. RIGHT OUTER JOIN
5. INNER JOIN
728x90
반응형