안녕하세요. 신입 개발자 입니다. 구루비에서 자료 검색만 하다가 처음으로 글을 올려 보네요. ORACLE 11G 에서 아래와 같이 구현 하고 싶습니다. GROUP BY ROLLUP (A.FACT, A.PLAN, A.SUB, A.LINE) -- #if(파라메터1=='T1' || 파라메터1 == 'T2') -- HAVING GROUPING_ID(A.FACT, A.PLAN, A.SUB,A.LINE) IN(0,1,15) -- #else -- HAVING GROUPING_ID(A.FACT, A.PLANT, A.SUB,A.LINE) IN(1,15) -- #end
답변 부탁 드립니다.
그리고 소중한 시간으로 읽어 주셔서 감사합니다.
GROUP BY ROLLUP(a, b, c, d) 에서 GROUPING_ID(a, b, c, d) 중에 필요한 값은
(0, 1, 15) 세가지 뿐입니다. (3, 7) 두가지는 필요 없죠.
필요없는 조합까지 다 가져온뒤 제거하기보다는.
필요한 조합만 가져오는게 좋습니다.
GROUP BY ROLLUP((a, b, c), d) 하면 필요한 세가지 조합만 가져오게 됩니다.
또한 (1, 15) 는 무조건 나오므로 0 이 필요한지 아닌지만 체크하면 될 듯 하네요.
GROUP BY ROLLUP ((a.fact, a.plan, a.sub), a.line) HAVING GROUPING(a.line) IN (1, CASE WHEN :p1 IN ('T1','T2') THEN 0 END)