반응형
조회구분에 따라 년 또는 월로 그룹핑해서 집계를 구하는 예시
<select id="selectStatus" parameterType="SearchVO" resultType="StatsVO">
SELECT
<!-- 조회 구분에 따른 월 또는 년 -->
<choose>
<when test="searchGubun == 1">
DATE_FORMAT(FRST_REG_DT, '%Y') || '년' AS searchMon /*년*/
</when>
<when test="searchGubun == 2">
DATE_FORMAT(FRST_REG_DT, '%M') AS searchMon /* 월 */
</when>
<otherwise>
DATE_FORMAT(FRST_REG_DT, '%M') AS searchMon /* 월 */
</otherwise>
</choose>
, COUNT(code) AS searchTotalCnt
, COUNT(CASE WHEN code = '10' THEN 1 END) AS searchPassedCnt
, COUNT(CASE WHEN code = '20' THEN 1 END) AS searchRejectedCnt
FROM TEST_BOARD
<!-- 검색 조건 -->
<where>
<!--- 시작일 -->
<if test='startDate != null and startDate != ""'>
TO_CHAR(FRST_REG_DT, 'YYYY-MM-DD') <![CDATA[ >= ]]> #{startDate}
</if>
<!--- 종료일 -->
<if test='endDate != null and endDate != ""'>
AND TO_CHAR(FRST_REG_DT, 'YYYY-MM-DD') <![CDATA[ <= ]]> #{endDate}
</if>
<!-- 시도 -->
<if test='ctpvNm != null and ctpvNm != ""'>
AND CTPV_NM = #{ctpvNm}
</if>
</where>
<!-- 조회 구분에 따른 그룹화 -->
<choose>
<!-- 년 -->
<when test="searchGubun == 1">
GROUP BY DATE_FORMAT(FRST_REG_DT, '%Y')
ORDER BY DATE_FORMAT(FRST_REG_DT, '%Y')
</when>
<!-- 월 -->
<when test="searchGubun == 2">
GROUP BY DATE_FORMAT(FRST_REG_DT, '%Y-%m')
ORDER BY DATE_FORMAT(FRST_REG_DT, '%Y-%m')
</when>
<!-- 월 -->
<otherwise>
GROUP BY DATE_FORMAT(FRST_REG_DT, '%Y-%m')
ORDER BY DATE_FORMAT(FRST_REG_DT, '%Y-%m')
</otherwise>
</choose>
</select>
반응형
'IT > development' 카테고리의 다른 글
[JavaScript] 다중 select 예시(feat. 지역코드) (31) | 2024.03.01 |
---|---|
[Chart.js] 통계 데이터 차트 생성 (feat. 안이쁨) (28) | 2024.03.01 |
[tiles] UnknownHostException: tiles.apache.org 에러 (48) | 2024.02.06 |
[spring] jUnit test 시 vm 옵션 전달 (feat. maven) (64) | 2024.01.21 |
[jQuery] 공통으로 선택자 처리 (60) | 2024.01.21 |