pivot 사용한 세로 가로 변환 query 문의 0 5 2,797

by 유재희 [SQL Query] pivot [2017.12.15 11:15:45]


안녕하세요

원시데이타를 세로로 저장된 데이타를 가로로 변환하여 조회할려고 합니다

pivot 을 사용하여 작업하는데  변환시 오류가 발생하여 도움 요청합니다.

원시 데이타

  ->

 

 

실행후 아래 에러 발생

 

안녕하세요!

추가문의 드립니다..

세로에서 가로로 전환할때 항목갯수가 많아서 함수를 사용하여 필드를 나열하고 싶은데 함수 사용이 가능한지요?

SELECT *
FROM (SELECT *
        FROM pp_h202_tag_info 
        WHERE tag_dai = '1100')

PIVOT ( MAX(TAG_nm) FOR tag_dai in fn_h202_tag_nm_cross('1100','') )

by 고수가되고싶어요 [2017.12.15 11:23:25]

WITH t AS  (
SELECT '20171214' tag_ymd, '01' tag_seq, '99012' tag_cd, 'LIA 2524B' TAG_VALUE FROM DUAL 
UNION ALL SELECT '20171214' tag_ymd, '01' tag_seq, '99011' tag_cd, 'LIA 2524A' TAG_VALUE FROM DUAL 
UNION ALL SELECT '20171214' tag_ymd, '01' tag_seq, '99005' tag_cd, 'PHR 2205' TAG_VALUE FROM DUAL 
UNION ALL SELECT '20171214' tag_ymd, '02' tag_seq, '99012' tag_cd, 'LIA 2524B 02' TAG_VALUE FROM DUAL 
UNION ALL SELECT '20171214' tag_ymd, '02' tag_seq, '99011' tag_cd, 'LIA 2524A 02' TAG_VALUE FROM DUAL 
UNION ALL SELECT '20171214' tag_ymd, '02' tag_seq, '99005' tag_cd, 'PHR 2205 02' TAG_VALUE FROM DUAL 
)

SELECT * 
FROM (SELECT * 
        FROM T
        WHERE TAG_CD IN ( '99012','99011','99005') )
PIVOT ( MAX(TAG_VALUE) FOR TAG_CD IN ( '99012','99011','99005') )

--결과 값 
tag_ymd		tag_seq		99012			99011			99005
20171214	01			LIA 2524B		LIA 2524A		PHR 2205
20171214	02			LIA 2524B 02	LIA 2524A 02	PHR 2205 02

 

원하시는게 이게 맞는지 모르겠네용 


by 유재희 [2017.12.15 13:43:05]

빠른 답변 감사드립니다..

어려움이 해결되었습니댜


by 마농 [2017.12.15 11:50:30]

해당 오류는 알리아스 오타(tag99012 > tag99011) 때문이구요.
PIVOT 사용법도 조정이 필요하네요.
 

SELECT *
  FROM (SELECT tag_ymd, tag_seq, tag_cd, tag_value
          FROM pp_h02_tag
         WHERE tag_cd IN ('99012','99011','99005')
        )
 PIVOT (MIN(tag_value) FOR tag_cd IN ( '99012' tag99012
                                     , '99011' tag99011
                                     , '99005' tag99005
                                     ) )
;

 


by 유재희 [2017.12.15 13:43:18]

빠른 답변 감사드립니다..

어려움이 해결되었습니다.


by 유재희 [2017.12.18 13:19:44]

안녕하세요!

추가문의 드립니다..

세로에서 가로로 전환할때 항목갯수가 많아서 함수를 사용하여 필드를 나열하고 싶은데 함수 사용이 가능한지요?

SELECT *
FROM (SELECT *
        FROM pp_h202_tag_info 
        WHERE tag_dai = '1100')

PIVOT ( MAX(TAG_nm) FOR tag_dai in fn_h202_tag_nm_cross('1100','') )

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