postgresql로 전환하려고 하는데 이런게 2개 동시에 있을경우 어떻게? 0 7 2,409

by 루피 [DB 기타] [2020.04.02 11:45:49]


(oracle ->edb)

select substr(xmlagg(xmlelement (tt,',', wm_concat( AA ( 'en', pp))) order by pp).extract('//text()').getstringval(),2) as NAME

이런 모습인데, xmlagg(xmlelement와 wm_cancat 동시에 2개가 있을경우 전환을 어떻게 하면 될까요?

wm_concat는 array_to_string(array_agg(AA ('en', pp)),',') 이런식으로 되는데, xmlagg~ 이부분을 도저히 처리를 못하겠습니다. ㅠㅠ

by pajama [2020.04.02 12:52:10]

edb 12버전이면 listagg로 대체하면 될듯하네요. wm_concat은 용법이 좀 특이하네요.

https://www.enterprisedb.com/ko/blog/how-workaround-oracle-listagg-function-postgresql#postgresql

listagg(array_to_string(array_agg(AA ('en', pp)),',')) within group (order by pp) as NAME 이런식일까요?


by 루피 [2020.04.02 15:23:18]

edb12는 아닌데요, listagg로 해보니 애러발생하는군요. 


by pajama [2020.04.02 15:57:44]

아니면 마농님 예전 답변을 참고해보심이...

http://www.gurubee.net/article/78310

http://www.gurubee.net/article/55512


by 루피 [2020.04.02 18:09:11]

@pajama님
말씀하신 URL 다 확인했는데요, 펑션안에 평션이 사례는 없는듯 하네요. 


by 마농 [2020.04.02 19:09:43]

동일한 기능(문자열 합치는 집계함수)을 하는 두개의 다른 함수를 사용했네요.
집계함수 중첩사용 형태네요. [ 예시, SUM( COUNT(*) ) 형태 ]
그룹바이 집계 후 한번더 전체집계 하는 형태 입니다.
이게 가능하면 그대로 변환하시면 되고.(오라클에서는 가능한데 다른 DB 는 안될 가능성이 있습니다)
이게 안되면 인라인뷰로 단계를 나누면 됩니다.


by 루피 [2020.04.13 18:43:39]

늦었네요~ 답변주신분들 모두 감사드립니다.

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