연말정산 관련해서 전산매체 신고 자료 생성 중 도저히 생각이 나질 않아 질문 드려요 ㅠ
* 설명 : 주석 설명 중 지급처 사업자등록번호에 * 포함되어 있을 경우인 번호들은 공백 포함 안되있을 경우는 그대로 두고
지급금액이 합산되도록 sum 하여 생성되도록 합니다.
* 질문 내용
1. --11-18 지급금액 부분에 SUM(gigub_amt) 을 하였는데 이 같은 경우는 한 컬럼에 조회되도록 짜여져 있는데
이럴 경우 그룹절 사용해야 하는 부분에서 어떻게 묶어야 하나요 ㅠ
소스를 통째로 올려보겠습니다.
SELECT 'A'|| --1 -1. 레코드구분
'26'|| --2 -2. 자료구분
'129'|| --3 -3. 세무서코드
LPAD(TO_CHAR(ROWNUM),6,'0')|| --6 -4. 일련번호
'12345678'|| --8 -5. 제출일자
--제출자(대리인)
RPAD(SUBSTR('129810000',1,10),10,' ')|| --10-6. 사업자번호(자료제출자의 사업자등록번호)
RPAD('aaaaa', 20,' ')|| --20-7. 홈택스ID
'9000'|| --4 -8. 세무프로그램코드 : 기타프로그램 코드 '9000'
--원천징수의무자
RPAD(SUBSTR('00001298100000',1,10),10,' ')|| --10-9. 원천징수의무자의 사업자등록번호
RPAD('회사',40,' ') || --40-10.업체명
--소득자(연말정산 신청자)
RPAD(b.juminid, 13,' ')|| --13-11.소득자의 주민번호 수록
gubun1|| --1 -12.내국인 :1, 외국인:2
RPAD(b.name,30,' ')|| --30-13.소득자의 성명 기재
--의료비 지급내역
DECODE(INSTR(busi_no,'*'), '0',RPAD(SUBSTR(REPLACE(busi_no,'-',''),1,10),10,' ')
, LPAD(' ',10))|| --10-14.지급처의 사업자등록번호 수록
DECODE(INSTR(busi_no,'*'), '0',RPAD(SUBSTR(sangho,1,40),40,' ')
, LPAD(' ',40))||
--40-15.지급처의 상호 수록
DECODE(INSTR(busi_no,'*'), '0', '5','1')|| --1 -16.의료증빙코드
DECODE(INSTR(busi_no,'*'), '0', LPAD(TO_CHAR(NVL(gigub_cnt,0)),5,'0')
, LPAD('0',5,'0'))|| --5 -17.건수
DECODE(INSTR(busi_no,'*'), '0', LPAD(TO_CHAR(NVL(gigub_amt,0)),11,'0')
, LPAD(TO_CHAR(NVL(SUM(gigub_amt),0)),11,'0'))|| --11-18.지급금액
RPAD(NVL(a.juminid, ' '),13,' ')|| --13-19.의료비지급 대상자의 주민등록 기재
NVL(gubun1, '1')|| --1 -20.내국인 :1, 외국인:2
NVL(gubun2, '2')|| --1 -21.본인등 해당 여부
'1'|| --1 -22.제출대상기간코드
RPAD(' ',19,' ') data --19-23.공란
FROM insa_year_med_det a, insa_yearjung b
WHERE a.year = '2012'
AND b.year = '2012'
AND b.sabun = a.sabun
AND DECODE(b.area, 'B', DECODE(SUBSTR(b.dept_code, 1, 1), 'T','B','A'), b.area) = 'X'
소스가 깔끔하게 등록이 안대네요;ㅠ
SELECT 'A' -- 1- 1.레코드구분 || '26' -- 2- 2.자료구분 || '129' -- 3- 3.세무서코드 || LPAD(ROWNUM) , 6,'0') -- 6- 4.일련번호 || '12345678' -- 8- 5.제출일자 -- 제출자(대리인) -- || RPAD('129810000' ,10,' ') --10- 6.사업자번호(자료제출자의 사업자등록번호) || RPAD('aaaaa' ,20,' ') --20- 7.홈택스ID || '9000' -- 4- 8.세무프로그램코드 : 기타프로그램 코드 '9000' -- 원천징수의무자 -- || RPAD('00001298100000',10,' ') --10- 9.원천징수의무자의 사업자등록번호 || RPAD('회사' ,40,' ') --40-10.업체명 -- 소득자(연말정산 신청자) -- || RPAD(b.juminid ,13,' ') --13-11.소득자의 주민번호 수록 || RPAD(gubun1 , 1,' ') -- 1-12.내국인 :1, 외국인:2 || RPAD(b.name ,30,' ') --30-13.소득자의 성명 기재 -- 의료비 지급내역 -- || RPAD(NVL(busi_no,' '),10,' ') --10-14.지급처의 사업자등록번호 수록 || RPAD(NVL(sangho ,' '),40,' ') --40-15.지급처의 상호 수록 || NVL2(busi_no,'5','1') -- 1-16.의료증빙코드 || LPAD(NVL2(busi_no,gigub_cnt,0),5,'0')) -- 5-17.건수 || LPAD(NVL(gigub_amt,0) ,11,'0') --11-18.지급금액 || RPAD(NVL(a.juminid,' '),13,' ') --13-19.의료비지급 대상자의 주민등록 기재 || NVL(gubun1, '1') -- 1-20.내국인 :1, 외국인:2 || NVL(gubun2, '2') -- 1-21.본인등 해당 여부 || '1' -- 1-22.제출대상기간코드 || RPAD(' ',19,' ') --19-23.공란 FROM (SELECT juminid, gubun1, gubun2 , DECODE(INSTR(busi_no, '*'), 0, '', REPLACE(busi_no, '-')) busi_no , DECODE(INSTR(busi_no, '*'), 0, '', sangho) sangho , SUM(gigub_cnt) gigub_cnt , SUM(gigub_amt) gigub_amt FROM insa_year_med_det a WHERE year = '2012' GROUP BY juminid, gubun1, gubun2 , DECODE(INSTR(busi_no, '*'), 0, '', REPLACE(busi_no, '-')) , DECODE(INSTR(busi_no, '*'), 0, '', sangho) ) a , insa_yearjung b WHERE b.year = '2012' AND b.sabun = a.sabun AND DECODE(b.area, 'B', DECODE(SUBSTR(b.dept_code, 1, 1), 'T','B','A'), b.area) = 'X' ;