select * from (
select row_number() over( order by REGI_DD desc ) as rNum, NO, DEPOSITOR,
TITL, USR_NM_KOR, USR_NM_ENG, EMAIL, GUBUN, COMP_NM_KOR, FIELD, COMP_NM_ENG, PHONE, TEL, ORA, REQUEST_COURSE, ACCEPT_YN,
REG_ID, (select COUNT(PT_NO) from FORUM_INFO_DETAIL where PT_NO = FORUM_INFO.NO and REAL_YN = 'Y' ) as DETAIL,
( select LGD_PAYTYPE from EN_LGD_LOG where RES_CODE = '0000' and PT_NO = FORUM_INFO.NO and RES_MSG = '결제성공' ) as LGD_PAYTYPE,
( select USR_NM || '('|| USR_E_NM || ')' || ', ' from FORUM_INFO_DETAIL where PT_NO = FORUM_INFO.NO and REAL_YN = 'Y' FOR XML PATH('') ) as DETAIL2
from FORUM_INFO where REAL_YN = 'Y' and GUBUN is not null
) B order by rNum asc ;
이같은 쿼리가 있는데.. 수정한다고 했는데 자꾸 오류가 뜹니다. 잘못된 점 알려주시면 감사하겠습니다.
detail2 항목은 LISTAGG 함수 이용하시면 됩니다.
http://www.gurubee.net/article/55512
이 쿼리가 만약 페이징 쿼리에 사용되는 서브쿼리라면?
Select 절에서 사용되는 스칼라서브쿼리는
페이징 처리 시작 전에 전체 데이터에 대해 처리하는 것 보다는
페이징 처리가 모두 끝난 뒤에 한페이지에 해당하는 자료에 대해서만 최종 수행하는 것이 좋습니다.
페이징 쿼리가 아니라면?
스칼라서브쿼리보다는 조인 방식으로 푸는 것이 좋습니다.
detail 을 우선 Group By 한뒤 조인하는 방식으로 풀어야 합니다.