WITH temp AS
(
select YEAR
,NTN_CD
,MONTH
,decode(NUM_OF_PERS,'0','자료없음',NUM_OF_PERS) v_amt
,to_char(PRVYY_VERSUS) v_rate
FROM T_TOURIST_STATS
)
SELECT YEAR || '년' AS year
, NTN_CD
, max(case when month = '1' then v_amt ELSE '' end) NUM_OF_PERS_JAN
, round(max(case when month = '1' then v_rate END),3) *100 PRVYY_VERSUS_JAN
FROM temp
group by YEAR, NTN_CD
HAVING NTN_CD = 'CN'
order by YEAR;
년도별 명수랑 퍼센트를 나타내주는 쿼리인데 데이터가 0이면 '자료없음' 이라고 표시해주고 싶은데 명수는 계산쿼리가 없어서 문자열로 출력이 가능한데
퍼센트경우 계산이 들어가서 문자열 출력이 잘 안되더라구요 어디 부분을 봐야 할까요?
CN 2004년 186246 0
CN 2005년 301458 61.9
CN 2006년 268689 -10.9
CN 2007년 410312 52.7
CN 2008년 426625 4
CN 2009년 238000 -44.2
CN 2010년 315200 32.4
CN 2011년 323200 2.5
CN 2012년 297800 -7.9
CN 2013년 322500 8.3
CN 2014년 294000 -8.8
CN 2015년 367700 25.1
CN 2016년 4775300 7.4
CN 2017년 3863800 -19.1
CN 2018년 4193500 8.5
CN 2019년 자료없음 0
CN 2020년 자료없음 0
CN 2021년 자료없음 0
SELECT ntn_cd , year || '년' year , MIN(DECODE(month, 1, v_amt)) num_of_pers_jan , MIN(DECODE(month, 1, v_rat)) prvyy_versus_jan , MIN(DECODE(month, 2, v_amt)) num_of_pers_feb , MIN(DECODE(month, 2, v_rat)) prvyy_versus_feb , MIN(DECODE(month, 3, v_amt)) num_of_pers_mar , MIN(DECODE(month, 3, v_rat)) prvyy_versus_mar , MIN(DECODE(month, 4, v_amt)) num_of_pers_apr , MIN(DECODE(month, 4, v_rat)) prvyy_versus_apr , MIN(DECODE(month, 5, v_amt)) num_of_pers_may , MIN(DECODE(month, 5, v_rat)) prvyy_versus_may , MIN(DECODE(month, 6, v_amt)) num_of_pers_jun , MIN(DECODE(month, 6, v_rat)) prvyy_versus_jun , MIN(DECODE(month, 7, v_amt)) num_of_pers_jul , MIN(DECODE(month, 7, v_rat)) prvyy_versus_jul , MIN(DECODE(month, 8, v_amt)) num_of_pers_aug , MIN(DECODE(month, 8, v_rat)) prvyy_versus_aug , MIN(DECODE(month, 9, v_amt)) num_of_pers_sep , MIN(DECODE(month, 9, v_rat)) prvyy_versus_sep , MIN(DECODE(month, 10, v_amt)) num_of_pers_oct , MIN(DECODE(month, 10, v_rat)) prvyy_versus_oct , MIN(DECODE(month, 11, v_amt)) num_of_pers_nov , MIN(DECODE(month, 11, v_rat)) prvyy_versus_nov , MIN(DECODE(month, 12, v_amt)) num_of_pers_dec , MIN(DECODE(month, 12, v_rat)) prvyy_versus_dec FROM (SELECT ntn_cd , year , month , DECODE(num_of_pers , 0, '자료없음', num_of_pers) v_amt , DECODE(prvyy_versus, 0, '자료없음', ROUND(prvyy_versus * 100, 1)) v_rat FROM t_tourist_stats WHERE ntn_cd = 'CN' ) GROUP BY ntn_cd, year ORDER BY ntn_cd, year ;