깜놀하는 해므찌로

MyBatis Oracle LISTAGG 사용 예시 / MySQL GROUP_CONCAT / 엑셀 다운 본문

IT

MyBatis Oracle LISTAGG 사용 예시 / MySQL GROUP_CONCAT / 엑셀 다운

agnusdei1207 2022. 7. 21. 16:01
반응형
SMALL

해당 테이블을 조회하는 데 회원 고유 번호를 이름으로 참조해 보겠습니다.

<!-- 엑셀 다운 -->
<select id="excelDownSelectList" parameterType="VO" resultType="VO">  
    /* VO.excelDownSelectList */  
    <![CDATA[
        SELECT  ROWNUM																				excelRow
             ,  A.EL_SEQ																			elSeq
             ,  (SELECT TAD.NAME FROM t_ad_user TAD WHERE TAD.USE_YN = 'Y' AND TAD.SEQ = A.RGST_ID)	rgstId
             ,  TO_CHAR(A.RGST_DT, 'YYYY.MM.DD')													rgstDt
             ,  A.CARD_NUM																			cardNum
             ,  CASE          
                WHEN NVL(A.ATCH_FILE_ID,'')<>''	  
                THEN '첨부' 
                ELSE '미첨부'
                 END 										   										atchFileId 
             ,  CASE 
                WHEN A.USE_YN = 'Y'   
                THEN '사용'   
                ELSE '미사용'    
                 END  																				useYn
             ,  CASE 
                WHEN A.STATE = 'Y'         
                THEN '확인'      
                ELSE '미확인'      
                 END 																				state  
             ,  A.EAT_DATE																			eatDate
             ,  (SELECT LISTAGG(NAME, ', ') WITHIN GROUP(ORDER BY A.USER_SEQ) FROM t_ad_user TAD WHERE A.USER_SEQ LIKE '%' || (TAD.seq) || '%'  )	 userSeq
             ,  A.PRICE																				price
             ,  A.RSTRN_NAME																		rstrnName 
             ,  A.ETC																				etc
         FROM	t_eat_log A
        WHERE	A.USE_YN = 'Y'
    ]]>   
        <include refid="Where"/>   
    <![CDATA[   
     ORDER BY	A.RGST_DT ASC, A.EL_SEQ ASC  
    ]]>	
</select>

1. SELECT LIGTAGG(컬럼명, 구분자) WITHIN GROUP (ORDER BY 정렬 기준 컬럼) FROM 테이블명

2. WHERE 검색어 LIKE '%' || (참조 컬럼) || '%'

3. 이때 검색어가 LIKE 우항에 있지 않고 좌항에 있는 것이 특징!

반응형
LIST