안녕하세요
RANK 함수를 이용하여 0원인 애들은 등수에서 빼고 1원인 녀석부터 등수를 매기고 싶은데요
SELECT STD_YYMM As StdYyMm
, BIZNO AS BizNo
, CASE WHEN AMT2 > 0 THEN RANK() OVER(PARTITON BY STD_YYMM ORDER BY AMT2) ELSE 0 END AS RNK
where STD_YYMM = '201410'
---------------------------------------
이렇게 했을때의 총건수 100건.
AND AMT2 > 0 <------------이렇게하면 0원이 빠지긴 하는데 15건 ,
0원인애들을 보존하고싶거든요.
어떻게해야할까요?
읽어주셔서 감사합니다
--다크비님 것과 동일하며, 오라클은 NULL을 정렬 시 뒤로 조회 됩니다. --명시적 선언 시 ORDER BY 구문에 NULLS LAST를 넣어도 됩니다. WITH T AS ( SELECT 1 val FROM DUAL UNION ALL SELECT 2 val FROM DUAL UNION ALL SELECT 3 val FROM DUAL UNION ALL SELECT 0 val FROM DUAL UNION ALL SELECT 0 val FROM DUAL ) SELECT val, RANK() OVER(ORDER BY DECODE(val, 0, NULL, val)) FROM T