가로를 세로로 변환 관련 문의 드립니다. 0 4 1,201

by InsideCore [SQL Query] [2017.12.28 17:31:10]


질문.jpg (49,834Bytes)

안녕하세요..

 

고수님들의 도움이 필요합니다.

DB : Oracle Database 11g

혹시 첨부된 이미지처럼  출력이 가능할까요.

단순히 값만 출력한다면 UNPIVOT을 사용하여 가능할 것으로 판단이 되는데요.

칼럼명까지 같이 보이게 하는 방법이 있는지요?

참고로 ROW값은 일자별로 늘어 납니다.

 

고수님들 도움 부탁 드립니다.

by 우리집아찌 [2017.12.28 17:40:47]
WITH T (COL1,COL2,COL3,COL4,COL5,COL6 ) AS (
SELECT 1001 , 1002 , 1003 , 1004 , 1005 , 1006 FROM DUAL 
)

SELECT * 
  FROM T 
  UNPIVOT ( DATA FOR COL IN (COL1,COL2,COL3,COL4,COL5,COL6));

 


by InsideCore [2017.12.28 18:00:23]

우리집 아찌님..

질문이 잘못되어 다시 올립니다.

한번더 봐주실수 있는지요?


by 우리집아찌 [2017.12.28 18:35:46]

다이나믹 쿼리 사용해야할것 같습니다.

날짜가 어떤게 들어올지 몰라서(고정값이 아니면 안됩니다)

아니시면 한달치 뽑아놓으시고 처리하셔야합니다.

mybatis 사용하신다면 pivot절의 in으로 받는 부분을 list로 받으셔서 처리또는 foreach 문을 사용하시면 되실겁니다.


by 무지버기 [2017.12.28 18:17:44]
WITH t(dt,col1,col2,col3,col4,col5,col6) AS (
    SELECT '2017-01-01',1001,1002,1003,1004,1005,1006 FROM DUAL UNION ALL
    SELECT '2017-02-01',2001,2002,2003,2004,2005,2006 FROM DUAL
)
SELECT 
*
FROM t
UNPIVOT(text FOR gb IN (col1,col2,col3,col4,col5,col6)) 
PIVOT(MIN(text) FOR dt IN ('2017-01-01','2017-02-01'))

 

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