by ReLight [Oracle 기초] 로우 컬럼변환 동적컬럼 가변컬럼 [2014.10.16 17:31:21]
안녕하세요. DB 공부하고 있는 학생입니다.
다름아니라 이번에 공부를하면서 쿼리를 짜보고 있거든요.
근데 좀 막히는게 있어서 도움을 받고자 질문 올립니다...
우선 쿼리는 부서별 비품의갯수 통계를 구하려고 하는데요.
비품기준으로 부서마다 몇개를 가지고 있는지를 구하면되는데
중요한건 부서도 가변적이라는 점입니다..
예를들어 영업팀의 펜,종이의 갯수를 구하는거라고하면
세부부서 상위부서
영업1 영업팀
영업2 영업팀
영업3 영업팀
이렇게 나온 영업1,2,3이 다시 컬럼이 되어서
비품이름 영업1 영업2 영업3
펜 1 5 4
종이 3 7 3
이렇게 나와야되거든요.
지금 막히는게 일단 저렇게 동적 컬럼이 만들어지는것도 구현이 되는건지도 의문점이고요..
저렇게 동적으로 만들어진 컬럼을 검색대상으로 정할수 있는지도 의문점이거든요...
저걸 어떻게 구현해야될까요...
도움 주셨으면 합니다..
SELECT item , SUM(DECODE(dept, '영업1', cnt)) 영업1 , SUM(DECODE(dept, '영업2', cnt)) 영업2 , SUM(DECODE(dept, '영업3', cnt)) 영업3 FROM t GROUP BY item ;
우선 정적쿼리는 위와 같습니다.
동적쿼리란 동적으로 쿼리문장을 완성하는 것을 말합니다.
쿼리 자체로 해결되는게 아니라 프로그램과 연동되어야 하는 부분입니다.
프로그램 언어에서 1차 쿼리를 통해 부서를 가져오고
루프를 돌려가면서 SUM(DECODE()) 부분을 쿼리에 추가해 나가시면 됩니다.
http://www.gurubee.net/article/19612