unpivot 시 오류... 티베로 0 10 10,890

by 스파르타 [Tibero] [2019.08.09 10:03:45]


집계를 한쿼리  sum 한

val1   val2  val3   val4  val5   tmp

1          2        0         2      5      '11'

라고 정상적으로 출력된 상태에서

쿼리마지막에  

unpivot (tmp for v in (val1,  val2, val3 ,  val4, val5))   라고 했는데.

 

jdbc 90405  i/o error while reading from the server - end of stream

라고 에러나는데  피벗구문 주석처리하면 잘나와요 ㅠㅠ  티베로는 뭐가 다른가 해서 위드문으로 가라 데이터 만들어서 하면 또되요? 혹시 이런증상이 왜그런지

아시는분? 피벗 구문이 잘못된건지.  아님 잘실행되는

본쿼리가 뭐가 형식이 잘못된건지....  

 

by 마농 [2019.08.09 10:19:15]

쿼리를 안올려 줘서 모르겠어요.
다만, 쿼리 마직막에 추가했다는 부분에서 의심이 들긴 합니다.
피벗 구문은 from 절에서 사용되는 구문인데요.
from 절이 아닌 위치에 피벗구문을 사용한게 아닐런지?


by 스파르타 [2019.08.09 10:28:20]

with t( val1, val2, val3, val4, val5, tmp) as

(

select sum(val1) val1

            ,sum(val2) val2

            ,sum(val3) val3

            ,sum(val4)  val4

            ,sum(val5)  val5

            , 111      tmp

from   업무테이블

)

select *

from t

unpivot (tmp for v in (val1,  val2, val3 ,  val4, val5))

 

업무테이블이라고한곳만 떼어내어 실핼하면 잘되요.

위드문안에 상세쿼리는 보안상 기입이 안되네요 어쨋든 결과는 예를든 with문과 동일해요 


by 마농 [2019.08.09 10:29:43]

with 문으로 하면 된다면서요? 안되는 쿼리를 올려주세요.


by 스파르타 [2019.08.09 10:35:23]

저도 올리고 싶네요^^ 죄송합니다 ㅠㅠ

결과는 이렇게 똑같이 나와요

아래저것을 언피벗한거구요 ...

다시한번 찬찬히 보겠습니다. 마농님 감사합니다^^

val1   val2  val3   val4  val5   tmp

1          2        0         2      5      '11'


by 마농 [2019.08.09 10:38:12]

쿼리 그대로 올려달라는게 아닌데요.
쿼리를 어떤식으로 사용했는지를 보고싶은거죠.
위에 with 문 사용 예시 올려주신 것처럼 with 문 사용안하고 오류난 쿼리 간략하게 올려주시면 됩니다.
간략히 올려주시되 너무 간략하게 올리시면 안되구요.
위에 예시엔 where 절이 없는데? 조건절이 없는게 맞는지?
의심가는 부분은 쿼리 마지막에 추가햇다는 부분이네요.


by 스파르타 [2019.08.09 10:50:48]

아 쿼리 마지막에 추가햇다는부분이.

본쿼리를 with 문으로 감싸서 

select *

from t

unpivot (tmp for v in (val1,  val2, val3 ,  val4, val5))

이렇게 했다는 말이였습니다. 본쿼리는 조건절도 당연히 있구요 다른테이블과 조인도 했습니다.

제가이해안되는부분이. 정상적으로 

val1   val2  val3   val4  val5   tmp

1          2        0         2      5      '11'

이렇게나온것을 위드문으로 감싸서 언피벗만 한거거든요

대충이라도 본쿼리 형식을 한번 적어보도록 할게요 

휴대폰이라 오후쯤 다시올리겠습니다.^^


by 마농 [2019.08.09 11:03:39]

아! 잘 된다는게 with 문 안에 다른 쿼리 넣으면 잘 된다는 거였군요?
정리하면. with 문은 사용한게 맞고,
with 문 안에 원본 쿼리 넣으면 에러나고, 다른 쿼리로 대체하면 에러 안나고.
맞나요?
맞다면? 그냥 버그라고 보시면 될 듯 합니다.


by 스파르타 [2019.08.09 11:36:54]

네 ^^

한가지 본쿼리안에 조건절중 부득이하게

and substr(id,-5,2)  in ( select trim(regexp_substr(

                                 t.arr_cat_val, '[^,]+', 1, level)) as txt from dual

connect by instr( t.arr_cat_val,',', 1, level -1) > 0

)         이부분을 빼니까 잘됩니다..... 조인한 다른테이블에서 콤마로 구분해서 가져온걸 in 에 넣어줘야해서 저렇게 했더니.. unpivot 시에는 안되네요

저부분을 어떻게 바꿔야하는지 고민해봐야겠습니다.


by 마농 [2019.08.09 14:46:40]

- 고정 자리수인 경우 : AND INSTR(t.arr_cat_val, SUBSTR(id, -5, 2)) > 0
- 가변 자리수인 경우 : AND INSTR(','||t.arr_cat_val||',', ','||SUBSTR(id, -5, 2)||',') > 0


by 스파르타 [2019.08.09 22:30:33]

오.... 그저 감탄이네요.

대단하십니다.

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