특정 테이블의 컬럼 내의 AA+BB 이런 수식을 select에 사용할려면 어떻게 하나요? 1 3 1,719

by ICARUS_JIN [SQL Query] oracle 10g [2018.12.03 21:42:53]


특정 테이블(Test1)에는 순번과 순번에 대한 수식(예 : a+b, a-b, a+c, a-c)

1  a+b

2  a-b

3  a+c

4  a-c

위와 같은 구조의 테이블이 존재하며 실질적인 a,b,c의 값을 담고 있는 테이블(test2) 이 있는데요.

a     b      c

1     2      3

 

위와 같은 2개의 테이블을 가지고

1   3

2    -1

3    4

4    -2

 

위와 같은 답을 구하고 싶습니다.

 

좋은 방법 좀 알려 주세요.

by 소주쵝오 [2018.12.04 09:22:42]
with t1 as
(select 1 no, 'a+b' cal from dual union all
 select 2 no, 'a-b' cal from dual union all
 select 3 no, 'a+c' cal from dual union all
 select 4 no, 'a-c' cal from dual
), 
t2 as 
(select 1 a, 2 b, 3 c from dual
)
select no --, cal, c1, c2, c3, a, b, c
     , TO_NUMBER(dbms_xmlgen.getxmltype('SELECT ' || r1||c2||r2  || ' a FROM DUAL' ).extract('//text()')) as result
from (select no, cal, c1, c2, c3, a, b, c
           , case when c1 = 'a' then a
                  when c1 = 'b' then b
                  when c1 = 'c' then c
             end r1
           , case when c3 = 'a' then a
                  when c3 = 'b' then b
                  when c3 = 'c' then c
             end r2
      from (select no, cal
                 , substr(cal, 1, 1) as c1
                 , substr(cal, 2, 1) as c2
                 , substr(cal, 3, 1) as c3
                 , t2.*
            from t1
               , t2
            )
     );

 


by ICARUS_JIN [2018.12.04 10:14:10]

dbms_xmlgen.getxmltype 을 알게 된 계기가 된거 같습니다. 정말 감사드립니다.


by 우리집아찌 [2018.12.04 13:41:03]

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입