아래 와 같이 데이터가 들어있는데요.
비용 테이블의 CODE1, CODE2, CODE3, CODE4 가 모두 값이 있으면 문제가 없을 것 같은데...
아래와 같이 빈값들이 있는 상황입니다.
========================================================
WITH TABLE_A (USER_CD, USER_NM, CODE1, CODE2, CODE3, CODE4 ) AS
( SELECT '101', 'A' ,'A-01', '1', 'A0', '1'
UNION ALL
SELECT '101', 'B' ,'A-01', '2', 'A01', '2'
UNION ALL
SELECT '101', 'C' ,'A-01', '1', 'A13', '1'
UNION ALL
SELECT '101', 'D' ,'A-01', '3', 'A20', '1'
)
, TABLE_B (CODE1 ,CODE2 ,CODE3 ,CODE4 ,COST ) AS
( SELECT '','', 'A0', '', 1000000
UNION ALL
SELECT '','', 'A01', '', 1000000
UNION ALL
SELECT '','1', 'A13', '1', 1000000
UNION ALL
SELECT 'A-01','3', 'A20', '1', 1000000
)
Select * from
( SELECT * FROM TABLE_A ) A
inner join
( SELECT * FROM TABLE_B ) B
on A.CODE1 = B.CODE1 and A.CODE2 = B.CODE2 and A.CODE3 = B.CODE3 and A.CODE4 = B.CODE4
===========================================================================
Select * from
( 사람속성 ) A
inner join
( 비용 ) B
on
A.CODE1 = B.CODE1 and A.CODE2 = B.CODE2 and A.CODE3 = B.CODE3 and A.CODE4 = B.CODE4
이렇게 했을 경우 값이 없는 데이터들에 대해
서는 가지고 오지 못하는 상황이 있어서..
비용 내역에서 CODE3의 값만 있는 경우 CODE1, CODE2, CODE4 는 무시하고 모두 값을 가지고 오고..
==> CODE1, CODE2, CODE3, CODE4 모두 값이 있으면 위처럼 조건이 걸리겠지만
TABLE_B 에 CODE3만 있을 경우에는
A.CODE3 = B.CODE3 만 적용이 되어야겠죠... 나머지 조건은 무시가 되고...
할 수 있을 까요?
질문이 너무 어렵네요.
사람 속성
USER_CD | USER_NM | CODE1 | CODE2 | CODE3 | CODE4 |
101 | A | A-01 | 1 | A0 | 1 |
102 | B | A-01 | 2 | A01 | 2 |
103 | C | A-01 | 1 | A0 | 1 |
104 | D | A-02 | 1 | A25 | 1 |
105 | E | A-02 | 2 | A13 | 1 |
106 | F | A-01 | 1 | A20 | 1 |
107 | G | A-01 | 2 | A20 | 1 |
108 | H | A-01 | 3 | A20 | 1 |
109 | I | A-02 | 1 | A20 | 1 |
110 | A | A-02 | 2 | A20 | 1 |
비용
CODE1 | CODE2 | CODE3 | CODE4 | COST |
A0 | 1000000 | |||
A01 | 1000000 | |||
1 | A13 | 1 | 0 | |
1 | A25 | 1 | 300000 | |
2 | A13 | 1 | 0 | |
A-01 | 1 | A20 | 1 | 0 |
A-01 | 2 | A20 | 1 | 0 |
A-01 | 3 | A20 | 1 | 0 |
A-02 | 1 | A20 | 1 | 0 |
A-02 | 2 | A20 | 1 | 0 |