누적 차감문제 .... 0 2 1,157

by DISTINCT [2019.06.10 14:59:42]


두 아이템에 값이 있는데 A라는 데이터에서 차감시 값이 부족하면 B에서 차감해야할 값을 출력하는 문제입니다.

 

CODE VALUE RESULT
A 100  
B 60  

위의 테이블에서 예를 들어 110 을 차감하라라고 하면 

CODE VALUE RESULT
A 100 100
B 60 10

80을 차감하면 

CODE VALUE RESULT
A 100 80
B 60 0

이렇게 A에서 차감이 가능하면 A에서만 뺄 값이 출력되면 되고 A에서 다 못하는 값은 B에서 추가 차감할 데이타를 RESULT 에 출력 하는 문제입니다. 아이템은 A와 B 두개만 예로 들었지만 유동적으로 늘어날수 있습니다.

 

 

by 마농 [2019.06.10 16:31:57]
WITH t AS
(
SELECT 'A' cd, 100 v FROM dual
UNION ALL SELECT 'B', 60 FROM dual
UNION ALL SELECT 'C', 40 FROM dual
)
SELECT cd
     , v
     , q
     , GREATEST(LEAST(v, q, q - s + v), 0) x
  FROM (SELECT cd
             , v
             , SUM(v) OVER(ORDER BY cd) s
             , 110 q
          FROM t
        )
;

 


by DISTINCT [2019.06.10 16:41:36]

여~~윽시.. 간단명료 !!! 마농님 최고!! >_< b

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입