아래쿼리인데요..
1월부터 월별로 쭈욱 나열 후에 금액이 100만원 초과되면 잘라내야하는데..
방법이 생각이 나질 않네요.
예를들어 1,2,3월의 금액을 합계하면 120만원인데
3월까지는 100만원으로만 표기되고 diff컬럼에 20만원을 표기하면 되는데, 이 기초적인것도 모르다니..공부 열심히 해야겠습니다
고수님들 답변 좀 부탁드립니다
select months, amt, '' diff
from (
select '1' months, 500000 as amt from dual
union all
select '2', 300000 as amt from dual
union all
select '3', 400000 as amt from dual
union all
select '4', 500000 as amt from dual
)
order by months
month 가 가변 자리 문자열이면 정렬이 원하는 대로 나오지 않습니다.
'10' 이 '2' 보다 빠름.
따라서 숫자 또는 고정자리로 가공하여 정렬해야 하는 불편함이 있습니다.
애초에 숫자(1) 또는 고정자리('01' 형태) 문자로 관리하셔야 합니다.
WITH t AS ( SELECT '1' months, 500000 amt FROM dual UNION ALL SELECT '2', 300000 FROM dual UNION ALL SELECT '3', 400000 FROM dual UNION ALL SELECT '4', 500000 FROM dual ) SELECT months , amt , GREATEST(0, s - 1000000) diff FROM (SELECT months , amt , SUM(amt) OVER(ORDER BY TO_NUMBER(months)) s FROM t ) WHERE s - amt < 1000000 ;