SQL 차액계산 방법좀 문의드립니다.(다시 원하는 결과 값 정리했습니다.) 0 6 2,124

by lgxj20 [Oracle 기초] [2017.02.10 20:37:02]


제목 없음D.png (25,578Bytes)
ASDASDASDGG.png (12,262Bytes)

안녕하세요 연말정산 기부금 계산시 세액공제 못받은 금액들 이월시키는 부분SQL인데요 설명이 어려워서 엑셀로 정리를 해봤습니다.

이미지 처럼 이미 테이블에 공제대상금액과 내년도 이월금액이 계산을 했는데요 연말정산 계산시 세액공제 못받는 금액을 내년도 이월금액으로 다시 더해서 이월시키는 부분 문의드립니다.

by jkson [2017.02.11 09:01:34]

실제 테이블 구조가 없어서 어떻게 만들어야 하는 건지 감이 안 오네요.

A, B로만 구성된 것도 아닐 것 같고.. 설명을 좀더 자세히 해주시면 좋을 것 같은데.. 소멸금액은 뭔지..

내년도 이월금액은 최종 값(엑셀에서는 B)에만 있는 것인지.. 기타 등등

최종적으로는 update문을 만드려고 하시는 거죠?

단순히 지금 표를 바꿔보면


with t as
(
select 'A' gb, 3500000 thisYamt, 0 nextYamt from dual union all
select 'B', 3225647, 3574353 from dual
)
select gb
     , decode(rn,cnt,5600000-sum(thisyamt) over(order by gb rows between unbounded preceding and 1 preceding),thisyamt) thisyamt
     , thisyamt + nextyamt - decode(rn,cnt,5600000-sum(thisyamt) over(order by gb rows between unbounded preceding and 1 preceding),thisyamt) nextyamt
  from
  (
  select gb, thisyamt, nextyamt, row_number() over(order by gb) rn, count(1) over() cnt 
    from t
  )

 


by lgxj20 [2017.02.12 21:34:31]

네 최종적으로 업데이트문을 만드려고하고 소멸금액은 필요 없습니다.

결과적으론 원래 이번년도 공제예상대상금액을 처음액 계산하고요 

원래는 그공제예상대상금액이 다공제가 되야 되는데 조건에 따라 공제예상대상금액보다 적은 금액이 공제가되는데

그 금액이 대상금액(이번년도 미 공제금액) 이금액을 원테이블에 각각 업데이트 해야되는데요 그컬럼이 내년도 이월금

액으로 업데이트 되야됩니다..

 

제가 원하는 결과 값 아래 이미지(엑셀)로 정리했습니다.^^ 


by 마농 [2017.02.13 08:28:37]

이미 해당연도 공제금액이 계산되어 나온것 아닌가요?
(기부금액 - 공제금액) 으로 내년도 이월금액 업데이트 하면 됩니다.
연말정산 계산 프로그램 로직중에 업데이트 로직만 추가하면 될 듯 합니다.


by lgxj20 [2017.02.13 10:11:23]

공제예상금액은 계산이 되어서 나온상태에서 

실제 연말정산 계산을 돌리다 예상금액보다 적은 금액이 공제가 된경우 예상금액 - 실제공제금액을 다시 내년도 이월금액에 합산을 해줘야하는 로직을 구현 하려고합니다.


by jkson [2017.02.13 10:22:42]

작성자님은 알고 있는 내용이니 쉽게 설명하시는데 글을 읽는 사람은 표만 보고도 정확히 뭘 원하시는 건지 알기가 어렵네요. 최초 요청하셨던 표와 추가된 표와의 연관성도 잘 모르겠고.. 첫 번째 표에는 변수가 있는데 두 번째 표에는 변수도 없고 단순히 기부금액-실제공제금액 -> 실제이월금액인 것 처럼 보이네요.

단순히 update 대상테이블 set 실제이월금액 = 기부금액-실제공제금액 해주면 되는 것 아닌가요?


by 마농 [2017.02.13 10:44:54]

원론적인 내용만 적은 질문에 이런 원론적인 답변밖에 달수가 없네요.
로직은 무척이나 단순하네요.
연말정산 계산 로직 중간에 해당 부분 로직만 추가하면 되는 아주 간단한 것입니다.

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