USE [ACC] GO /****** Object: StoredProcedure [dbo].[usp_frm21404_01] Script Date: 2023-02-21 오전 10:33:37 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ========================================== -- 작업일자: YYYY-MM-DD [쿼리 작성 및 실행 날짜를 기록합니다.] -- 작 성 자: [실행자 이름을 기록합니다.] -- 작업목적: [회계장부로 원가계산기능을 순차적으로 실행하며 중간산출자료 등을 검토할 목적으로 만든 쿼리이며 원가계산 프로시저입니다.] -- 요청자/티켓번호: [회계팀의 요청시 원가계산을 검토하는 용도입니다.] -- 데이타베이스 : MS-SQL -- ========================================== /*************************************************************/ /* 재료비 집계 & 간접 재료비 배부 */ /* 노무비 집계 & 간접 노무비 배부 */ /* 경 비 집계 & 간접 경 비 배부 */ /* 외주비 집계 & 간접 외주비 배부 */ /*************************************************************/ -- exec ACC.dbo.usp_frm21404_01 @area = '9', @saupbu = '10', @frdate = '20110101', @todate = '20110930' -- ALTER PROCEDURE [dbo].[usp_frm21404_01] drop table #temp_t23a10 DECLARE @area CHAR(1) , @saupbu CHAR(2), @frdate CHAR(8), @todate CHAR(8) -- AS SELECT @area = '9', @saupbu = '10', @frdate = '20220101', @todate = '20221231' DECLARE @totamt DECIMAL(20,0) DECLARE @yy CHAR(4) SET @yy = SUBSTRING(@frdate,1,4) CREATE TABLE #temp_t23a10 ( area CHAR(1) null, apvdate CHAR(8) null, apvnum CHAR(6) null, apvseq CHAR(6) null, saupbu CHAR(2) null, acntcode CHAR(7) null, vendorcd VARCHAR(20) null, pjtno VARCHAR(20) null, apvdramt DECIMAL, apvcramt DECIMAL, hyundae CHAR(1) null, dr_cr CHAR(1) null ) --============ 조정후 시작(2011.11.16) INSERT #temp_t23a10 SELECT area,apvdate,apvnum,apvseq,saupbu,acntcode,vendorcd,pjtno,apvdramt,apvcramt,hyundae,dr_cr FROM ACC.dbo.t23a10 WHERE area = @area AND saupbu = @saupbu AND apvdate BETWEEN SUBSTRING(@todate,1,4) AND @todate UPDATE a SET acntcode = (CASE WHEN b.c_acntcode <> '' THEN b.c_acntcode ELSE a.acntcode END) , pjtno = (CASE WHEN b.c_pjtno <> '' THEN b.c_pjtno ELSE a.pjtno END) FROM #temp_t23a10 a JOIN ACC.dbo.t23w70 b ON a.apvdate = b.apvdate and a.apvnum = b.apvnum and a.apvseq = b.apvseq --============ 조정후 종료 /* 지움 */ DELETE ACC.dbo.t23w20 -- 원가계산마스타 WHERE yy = @yy DECLARE @temp_s1 TABLE ( pjtno VARCHAR(10) , acntcode VARCHAR(7) , mon VARCHAR(2) , slpamt DECIMAL(20,2) ) DECLARE @temp_s2 TABLE ( pjtno VARCHAR(10) , yy CHAR(4) , hg_gijun CHAR(1) ) INSERT @temp_s2 SELECT c.pjtno_rep pjtno, a.yy, a.hg_gijun FROM ACC.dbo.t23w60 a JOIN ACC.dbo.t23w50 c ON a.yy = c.yy and a.pjtno = c.pjtno_rep WHERE a.yy = @yy UNION SELECT c.pjtno_slip pjtno, a.yy, a.hg_gijun FROM ACC.dbo.t23w60 a JOIN ACC.dbo.t23w50 c ON a.yy = c.yy and a.pjtno = c.pjtno_rep WHERE a.yy = @yy --============================================================================================== -- 원가계산 공사진행율로 인식 -- 직접비와 간접비를 산출한다. -- 직접비는 재료비는 프로젝트별 하나의 계정 월별로 합계액을 구한다. -- 노무비는 프로젝트별 급여, 상여, 기타(나머지는 기타로)별 월별로 합계액을 구한다. -- 경비는 프로젝트별 각 계정별 월별로 합계액을 구한다. -- 외주비는 프로젝트별 하나의 계정 월별로 합계액을 구한다. -- 간접비는 간접비 배부기준에서 불러와서 체크된 것에 한해서 프로젝트별 계정별 월별에 배부한다. --============================================================================================== /* 재료비 직접비 집계 -->월별로 재료비 하나로만 관리*/ INSERT @temp_s1 SELECT a.pjtno, acntcode = ISNULL(b.acntcode,'91'), mon = ISNULL(b.mon,'01'), slpamt = ISNULL(b.slpamt,0) FROM @temp_s2 a JOIN ( SELECT pjtno = ISNULL(pjtno,'') , acntcode = '91' , mon = SUBSTRING(apvdate,5,2) , slpamt = SUM(apvdramt) FROM #temp_t23a10 WHERE acntcode LIKE '91%' AND apvdate >= @frdate AND apvdate <= @todate AND saupbu = @saupbu AND area = @area GROUP BY pjtno, SUBSTRING(apvdate,5,2) ) b ON a.pjtno = b.pjtno WHERE a.yy = @yy AND a.hg_gijun = '1' ORDER BY a.pjtno INSERT @temp_s1 SELECT a.pjtno, acntcode = ISNULL(b.acntcode,'91'), mon = ISNULL(b.mon,'01'), slpamt = ISNULL(b.slpamt,0) FROM @temp_s2 a JOIN ( SELECT pjtno = ISNULL(pjtno,'') , acntcode = '91' , mon = SUBSTRING(apvdate,5,2) , slpamt = SUM(apvdramt) FROM ACC.dbo.t23a90 WHERE acntcode LIKE '91%' -- AND apvdate >= @frdate AND apvdate = @todate AND saupbu = @saupbu AND area = @area GROUP BY pjtno, SUBSTRING(apvdate,5,2) ) b ON a.pjtno = b.pjtno WHERE a.yy = @yy AND a.hg_gijun = '1' ORDER BY a.pjtno /* 노무비 직접비 집계 --> 프로젝트별 계정과목별 월별 금액*/ INSERT @temp_s1 SELECT a.pjtno, acntcode = ISNULL(b.acntcode,'9200101') , mon = ISNULL(b.mon,'01'), slpamt = ISNULL(b.slpamt,0) FROM @temp_s2 a JOIN ( SELECT pjtno = ISNULL(pjtno,'') , acntcode , mon = SUBSTRING(apvdate,5,2) , slpamt = SUM(apvdramt) FROM #temp_t23a10 WHERE acntcode LIKE '92%' AND apvdate >= @frdate AND apvdate <= @todate AND saupbu = @saupbu AND area = @area GROUP BY pjtno, acntcode, SUBSTRING(apvdate,5,2) ) b ON a.pjtno = b.pjtno WHERE a.yy = @yy AND a.hg_gijun = '1' ORDER BY a.pjtno INSERT @temp_s1 SELECT a.pjtno, acntcode = ISNULL(b.acntcode,'9200101') , mon = ISNULL(b.mon,'01'), slpamt = ISNULL(b.slpamt,0) FROM @temp_s2 a JOIN ( SELECT pjtno = ISNULL(pjtno,'') , acntcode , mon = SUBSTRING(apvdate,5,2) , slpamt = SUM(apvdramt) FROM ACC.dbo.t23a90 WHERE acntcode LIKE '92%' -- AND apvdate >= @frdate AND apvdate = @todate AND saupbu = @saupbu AND area = @area GROUP BY pjtno, acntcode, SUBSTRING(apvdate,5,2) ) b ON a.pjtno = b.pjtno WHERE a.yy = @yy AND a.hg_gijun = '1' ORDER BY a.pjtno /* 경 비 직접비 집계 */ INSERT @temp_s1 SELECT a.pjtno, acntcode = ISNULL(b.acntcode,'9300101') , mon = ISNULL(b.mon,'01'), slpamt = ISNULL(b.slpamt,0) FROM @temp_s2 a JOIN ( SELECT pjtno = ISNULL(pjtno,'') , acntcode , mon = SUBSTRING(apvdate,5,2) , slpamt = SUM(apvdramt) FROM #temp_t23a10 WHERE acntcode LIKE '93%' AND apvdate >= @frdate AND apvdate <= @todate AND saupbu = @saupbu AND area = @area GROUP BY pjtno, acntcode, SUBSTRING(apvdate,5,2) ) b ON a.pjtno = b.pjtno WHERE a.yy = @yy AND a.hg_gijun = '1' ORDER BY a.pjtno INSERT @temp_s1 SELECT a.pjtno, acntcode = ISNULL(b.acntcode,'9300101') , mon = ISNULL(b.mon,'01'), slpamt = ISNULL(b.slpamt,0) FROM @temp_s2 a JOIN ( SELECT pjtno = ISNULL(pjtno,'') , acntcode , mon = SUBSTRING(apvdate,5,2) , slpamt = SUM(apvdramt) FROM ACC.dbo.t23a90 WHERE acntcode LIKE '93%' -- AND apvdate >= @frdate AND apvdate = @todate AND saupbu = @saupbu AND area = @area GROUP BY pjtno, acntcode, SUBSTRING(apvdate,5,2) ) b ON a.pjtno = b.pjtno WHERE a.yy = @yy AND a.hg_gijun = '1' ORDER BY a.pjtno /* 외주비 직접비 집계 */ INSERT @temp_s1 SELECT a.pjtno, acntcode = ISNULL(b.acntcode,'94') , mon = ISNULL(b.mon,'01'), slpamt = ISNULL(b.slpamt,0) FROM @temp_s2 a JOIN ( SELECT pjtno = ISNULL(pjtno,'') , acntcode = '94' , mon = SUBSTRING(apvdate,5,2) , slpamt = SUM(apvdramt) FROM #temp_t23a10 WHERE acntcode LIKE '94%' AND apvdate >= @frdate AND apvdate <= @todate AND saupbu = @saupbu AND area = @area GROUP BY pjtno, acntcode, SUBSTRING(apvdate,5,2) ) b ON a.pjtno = b.pjtno WHERE a.yy = @yy AND a.hg_gijun = '1' ORDER BY a.pjtno INSERT @temp_s1 SELECT a.pjtno, acntcode = ISNULL(b.acntcode,'94') , mon = ISNULL(b.mon,'01'), slpamt = ISNULL(b.slpamt,0) FROM @temp_s2 a JOIN ( SELECT pjtno = ISNULL(pjtno,'') , acntcode = '94' , mon = SUBSTRING(apvdate,5,2) , slpamt = SUM(apvdramt) FROM ACC.dbo.t23a90 WHERE acntcode LIKE '94%' -- AND apvdate >= @frdate AND apvdate = @todate AND saupbu = @saupbu AND area = @area GROUP BY pjtno, acntcode, SUBSTRING(apvdate,5,2) ) b ON a.pjtno = b.pjtno WHERE a.yy = @yy AND a.hg_gijun = '1' ORDER BY a.pjtno /* 전표등록된 공사코드 ---> 원가계산용 공사코드로 변경 */ UPDATE @temp_s1 SET pjtno = b.pjtno_rep FROM @temp_s1 a JOIN ACC.dbo.t23w50 b ON b.yy = @yy and a.pjtno = b.pjtno_slip /* 원가계산 테이블에 저장 ---> 프로젝트별 계정별 월별 직접비 금액*/ INSERT ACC.dbo.t23w20 (yy, pjtno, acntcode, indi, [month], amt, rate, gijun) SELECT @yy , pjtno, acntcode , indi = '1'--직접비 , mon , amt = ISNULL(SUM(slpamt),0) , rate = 0 , gijun = '1' -- 공사진행율 인식 FROM @temp_s1 WHERE pjtno <> 'AA' GROUP BY pjtno, acntcode, mon ORDER BY pjtno, acntcode, mon --================================================================= -- 원가계산 세금계산서 발행금액으로 인식(직접비만 산출한다.) --================================================================= DELETE @temp_s1 /* 재료비 직접비 집계 -->월별로 재료비 하나로만 관리*/ INSERT @temp_s1 SELECT a.pjtno, acntcode = ISNULL(b.acntcode,'91'), mon = ISNULL(b.mon,'01'), slpamt = ISNULL(b.slpamt,0) FROM @temp_s2 a JOIN ( SELECT pjtno = ISNULL(pjtno,'') , acntcode = '91' , mon = SUBSTRING(apvdate,5,2) , slpamt = SUM(apvdramt) FROM #temp_t23a10 WHERE acntcode LIKE '91%' AND apvdate >= @frdate AND apvdate <= @todate AND saupbu = @saupbu AND area = @area GROUP BY pjtno, SUBSTRING(apvdate,5,2) ) b ON a.pjtno = b.pjtno WHERE a.yy = @yy AND a.hg_gijun = '2' ORDER BY a.pjtno INSERT @temp_s1 SELECT a.pjtno, acntcode = ISNULL(b.acntcode,'91'), mon = ISNULL(b.mon,'01'), slpamt = ISNULL(b.slpamt,0) FROM @temp_s2 a JOIN ( SELECT pjtno = ISNULL(pjtno,'') , acntcode = '91' , mon = SUBSTRING(apvdate,5,2) , slpamt = SUM(apvdramt) FROM ACC.dbo.t23a90 WHERE acntcode LIKE '91%' -- AND apvdate >= @frdate AND apvdate = @todate AND saupbu = @saupbu AND area = @area GROUP BY pjtno, SUBSTRING(apvdate,5,2) ) b ON a.pjtno = b.pjtno WHERE a.yy = @yy AND a.hg_gijun = '2' ORDER BY a.pjtno /* 노무비 직접비 집계 --> 프로젝트별 계정과목별 월별 금액*/ INSERT @temp_s1 SELECT a.pjtno, acntcode = ISNULL(b.acntcode,'9200101') , mon = ISNULL(b.mon,'01'), slpamt = ISNULL(b.slpamt,0) FROM @temp_s2 a JOIN ( SELECT pjtno = ISNULL(pjtno,'') , acntcode , mon = SUBSTRING(apvdate,5,2) , slpamt = SUM(apvdramt) FROM #temp_t23a10 WHERE acntcode LIKE '92%' AND apvdate >= @frdate AND apvdate <= @todate AND saupbu = @saupbu AND area = @area GROUP BY pjtno, acntcode, SUBSTRING(apvdate,5,2) ) b ON a.pjtno = b.pjtno WHERE a.yy = @yy AND a.hg_gijun = '2' ORDER BY a.pjtno INSERT @temp_s1 SELECT a.pjtno, acntcode = ISNULL(b.acntcode,'9200101') , mon = ISNULL(b.mon,'01'), slpamt = ISNULL(b.slpamt,0) FROM @temp_s2 a JOIN ( SELECT pjtno = ISNULL(pjtno,'') , acntcode , mon = SUBSTRING(apvdate,5,2) , slpamt = SUM(apvdramt) FROM ACC.dbo.t23a90 WHERE acntcode LIKE '92%' -- AND apvdate >= @frdate AND apvdate = @todate AND saupbu = @saupbu AND area = @area GROUP BY pjtno, acntcode, SUBSTRING(apvdate,5,2) ) b ON a.pjtno = b.pjtno WHERE a.yy = @yy AND a.hg_gijun = '2' ORDER BY a.pjtno /* 경 비 직접비 집계 */ INSERT @temp_s1 SELECT a.pjtno, acntcode = ISNULL(b.acntcode,'9300101') , mon = ISNULL(b.mon,'01'), slpamt = ISNULL(b.slpamt,0) FROM @temp_s2 a JOIN ( SELECT pjtno = ISNULL(pjtno,'') , acntcode , mon = SUBSTRING(apvdate,5,2) , slpamt = SUM(apvdramt) FROM #temp_t23a10 WHERE acntcode LIKE '93%' AND apvdate >= @frdate AND apvdate <= @todate AND saupbu = @saupbu AND area = @area GROUP BY pjtno, acntcode, SUBSTRING(apvdate,5,2) ) b ON a.pjtno = b.pjtno WHERE a.yy = @yy AND a.hg_gijun = '2' ORDER BY a.pjtno INSERT @temp_s1 SELECT a.pjtno, acntcode = ISNULL(b.acntcode,'9300101') , mon = ISNULL(b.mon,'01'), slpamt = ISNULL(b.slpamt,0) FROM @temp_s2 a JOIN ( SELECT pjtno = ISNULL(pjtno,'') , acntcode , mon = SUBSTRING(apvdate,5,2) , slpamt = SUM(apvdramt) FROM ACC.dbo.t23a90 WHERE acntcode LIKE '93%' -- AND apvdate >= @frdate AND apvdate = @todate AND saupbu = @saupbu AND area = @area GROUP BY pjtno, acntcode, SUBSTRING(apvdate,5,2) ) b ON a.pjtno = b.pjtno WHERE a.yy = @yy AND a.hg_gijun = '2' ORDER BY a.pjtno /* 외주비 직접비 집계 */ INSERT @temp_s1 SELECT a.pjtno, acntcode = ISNULL(b.acntcode,'94') , mon = ISNULL(b.mon,'01'), slpamt = ISNULL(b.slpamt,0) FROM @temp_s2 a JOIN ( SELECT pjtno = ISNULL(pjtno,'') , acntcode = '94' , mon = SUBSTRING(apvdate,5,2) , slpamt = SUM(apvdramt) FROM #temp_t23a10 WHERE acntcode LIKE '94%' AND apvdate >= @frdate AND apvdate <= @todate AND saupbu = @saupbu AND area = @area GROUP BY pjtno, acntcode, SUBSTRING(apvdate,5,2) ) b ON a.pjtno = b.pjtno WHERE a.yy = @yy AND a.hg_gijun = '2' ORDER BY a.pjtno INSERT @temp_s1 SELECT a.pjtno, acntcode = ISNULL(b.acntcode,'94') , mon = ISNULL(b.mon,'01'), slpamt = ISNULL(b.slpamt,0) FROM @temp_s2 a JOIN ( SELECT pjtno = ISNULL(pjtno,'') , acntcode = '94' , mon = SUBSTRING(apvdate,5,2) , slpamt = SUM(apvdramt) FROM ACC.dbo.t23a90 WHERE acntcode LIKE '94%' -- AND apvdate >= @frdate AND apvdate = @todate AND saupbu = @saupbu AND area = @area GROUP BY pjtno, acntcode, SUBSTRING(apvdate,5,2) ) b ON a.pjtno = b.pjtno WHERE a.yy = @yy AND a.hg_gijun = '2' ORDER BY a.pjtno /* 전표등록된 공사코드 ---> 원가계산용 공사코드로 변경 */ UPDATE @temp_s1 SET pjtno = b.pjtno_rep FROM @temp_s1 a JOIN ACC.dbo.t23w50 b ON b.yy = @yy and a.pjtno = b.pjtno_slip /* 원가계산 테이블에 저장 ---> 프로젝트별 계정별 월별 직접비 금액*/ INSERT ACC.dbo.t23w20 (yy, pjtno, acntcode, indi, [month], amt, rate, gijun) SELECT @yy , pjtno, acntcode , indi = '1'--직접비 , mon , amt = ISNULL(SUM(slpamt),0) , rate = 0 , gijun = '2' -- 세금계산서 발행금액 인식 FROM @temp_s1 WHERE pjtno <> 'AA' GROUP BY pjtno, acntcode, mon ORDER BY pjtno, acntcode, mon /* ------------------------------------------------------------------- */ /* 간접비는 원가배부기준이 1인것에만 프로젝트별 계정별 월별로 배부한다.*/ /* 간접비는 공사코드가 AA인 것만 합치면 된다. */ /* 간접비는 직접비의 비율에 따라서 배부한다. */ /* ------------------------------------------------------------------- */ DELETE @temp_s1 /* 재료비 간접집계 -- 하나의 계정으로 관리*/ INSERT @temp_s1 SELECT pjtno , acntcode = '91' , mon = SUBSTRING(apvdate,5,2) , slpamt = SUM(apvdramt) FROM #temp_t23a10 WHERE acntcode LIKE '91%' AND saupbu = @saupbu AND area = @area AND apvdate >= @frdate AND apvdate <= @todate -- AND pjtno = 'AA' AND (pjtno = 'AA' OR pjtno IN (select pjtno_slip from ACC.dbo.t23w50 where yy = substring(@frdate,1,4) and pjtno_rep = 'AA')) GROUP BY pjtno, SUBSTRING(apvdate,5,2) INSERT @temp_s1 SELECT pjtno , acntcode = '91' , mon = SUBSTRING(apvdate,5,2) , slpamt = SUM(apvdramt) FROM ACC.dbo.t23a90 WHERE acntcode LIKE '91%' AND saupbu = @saupbu AND area = @area -- AND apvdate >= @frdate AND apvdate = @todate -- AND pjtno = 'AA' AND (pjtno = 'AA' OR pjtno IN (select pjtno_slip from ACC.dbo.t23w50 where yy = substring(@frdate,1,4) and pjtno_rep = 'AA')) GROUP BY pjtno, SUBSTRING(apvdate,5,2) /* 노무비 간접비 집계 -- 급여, 상여, 기타로 관리하기로 했는데 일단 계정별로 */ INSERT @temp_s1 SELECT pjtno , acntcode , mon = SUBSTRING(apvdate,5,2) , slpamt = SUM(apvdramt) FROM #temp_t23a10 WHERE acntcode LIKE '92%' AND saupbu = @saupbu AND area = @area AND apvdate >= @frdate AND apvdate <= @todate -- AND pjtno = 'AA' AND (pjtno = 'AA' OR pjtno IN (select pjtno_slip from ACC.dbo.t23w50 where yy = substring(@frdate,1,4) and pjtno_rep = 'AA')) GROUP BY pjtno, acntcode, SUBSTRING(apvdate,5,2) INSERT @temp_s1 SELECT pjtno , acntcode , mon = SUBSTRING(apvdate,5,2) , slpamt = SUM(apvdramt) FROM ACC.dbo.t23a90 WHERE acntcode LIKE '92%' AND saupbu = @saupbu AND area = @area -- AND apvdate >= @frdate AND apvdate = @todate -- AND pjtno = 'AA' AND (pjtno = 'AA' OR pjtno IN (select pjtno_slip from ACC.dbo.t23w50 where yy = substring(@frdate,1,4) and pjtno_rep = 'AA')) GROUP BY pjtno, acntcode, SUBSTRING(apvdate,5,2) /* 경비 간접비 집계 --계정별로 합계를 구한다. */ INSERT @temp_s1 SELECT pjtno , acntcode , mon = SUBSTRING(apvdate,5,2) , slpamt = SUM(apvdramt) FROM #temp_t23a10 WHERE acntcode LIKE '93%' AND saupbu = @saupbu AND area = @area AND apvdate >= @frdate AND apvdate <= @todate -- AND pjtno = 'AA' AND (pjtno = 'AA' OR pjtno IN (select pjtno_slip from ACC.dbo.t23w50 where yy = substring(@frdate,1,4) and pjtno_rep = 'AA')) GROUP BY pjtno, acntcode, SUBSTRING(apvdate,5,2) INSERT @temp_s1 SELECT pjtno , acntcode , mon = SUBSTRING(apvdate,5,2) , slpamt = SUM(apvdramt) FROM ACC.dbo.t23a90 WHERE acntcode LIKE '93%' AND saupbu = @saupbu AND area = @area -- AND apvdate >= @frdate AND apvdate = @todate -- AND pjtno = 'AA' AND (pjtno = 'AA' OR pjtno IN (select pjtno_slip from ACC.dbo.t23w50 where yy = substring(@frdate,1,4) and pjtno_rep = 'AA')) GROUP BY pjtno, acntcode, SUBSTRING(apvdate,5,2) /* 외주비 간접비 집계 --하나의 계정으로 합계를 구한다. */ INSERT @temp_s1 SELECT pjtno , acntcode = '94' , mon = SUBSTRING(apvdate,5,2) , slpamt = SUM(apvdramt) FROM #temp_t23a10 WHERE acntcode LIKE '94%' AND saupbu = @saupbu AND area = @area AND apvdate >= @frdate AND apvdate <= @todate -- AND pjtno = 'AA' AND (pjtno = 'AA' OR pjtno IN (select pjtno_slip from ACC.dbo.t23w50 where yy = substring(@frdate,1,4) and pjtno_rep = 'AA')) GROUP BY pjtno, SUBSTRING(apvdate,5,2) INSERT @temp_s1 SELECT pjtno , acntcode = '94' , mon = SUBSTRING(apvdate,5,2) , slpamt = SUM(apvdramt) FROM ACC.dbo.t23a90 WHERE acntcode LIKE '94%' AND saupbu = @saupbu AND area = @area -- AND apvdate >= @frdate AND apvdate = @todate -- AND pjtno = 'AA' AND (pjtno = 'AA' OR pjtno IN (select pjtno_slip from ACC.dbo.t23w50 where yy = substring(@frdate,1,4) and pjtno_rep = 'AA')) GROUP BY pjtno, SUBSTRING(apvdate,5,2) /* 간접비 합계 ------------------------------------------------ SELECT pjtno, acntcode, mon, amt=ISNULL(SUM(slpamt),0) into #temp_s3 FROM @temp_s1 group by pjtno, acntcode, mon */ /************************************************************************/ /* 간접비 배부 ------------------------------------------------*/ /************************************************************************/ DECLARE @chk_baebu_yn1 char(1),@chk_baebu_yn2 char(1),@chk_baebu_yn3 char(1),@chk_baebu_yn4 char(1) SELECT @chk_baebu_yn1 = cd_name4 FROM ACC.dbo.t23c90 WHERE group_code = '05' AND sub_code = '1' SELECT @chk_baebu_yn2 = cd_name4 FROM ACC.dbo.t23c90 WHERE group_code = '05' AND sub_code = '2' SELECT @chk_baebu_yn3 = cd_name4 FROM ACC.dbo.t23c90 WHERE group_code = '05' AND sub_code = '3' SELECT @chk_baebu_yn4 = cd_name4 FROM ACC.dbo.t23c90 WHERE group_code = '05' AND sub_code = '4' /* 직접비 합 구함 :::: 프로젝트별 월별 계정별 합계 */ /* 간접비 배부기준에 따라서 직접비 합이 틀려진다. 간접비배부에 해당하는 계정에 대한 합(A)을 구한다.*/ /* 간접비 배부에 해당하는 프로젝트별 합(B)을 구해서 B/A*100을 하면 비율이 구해진다.*/ /* SELECT pjtno, month , SUM(case when acntcode like '91%' then amt else 0 end) tot1 , SUM(case when acntcode like '92%' then amt else 0 end) tot2 , SUM(case when acntcode like '93%' then amt else 0 end) tot3 , SUM(case when acntcode like '94%' then amt else 0 end) tot4 , rate=convert(decimal(20,13),0) into @totamt1 FROM ACC.dbo.t23w20 WHERE area=@area AND saupbu=@saupbu AND indi = '1' --직접비기준 AND gijun = '1' --공사진행율기준 GROUP BY pjtno, month */ -- SELECT * FROM @temp_s1 -- SELECT SUM(slpamt) FROM @temp_s1 GROUP BY SUBSTRING(acntcode,1,2) -- SELECT * FROM @totamt1 ORDER BY acntcode, pjtno -- SELECT * FROM @totamt2 ORDER BY pjtno, acntcode -- 이거는 사용 안해도 될듯... DECLARE @totamt1 TABLE ( pjtno VARCHAR(10), acntcode VARCHAR(7), [month] VARCHAR(2), totamt DECIMAL, rate DECIMAL(20,13) ) INSERT INTO @totamt1 SELECT pjtno, acntcode, [month], totamt=SUM(amt), rate=0 FROM ACC.dbo.t23w20 WHERE yy = @yy AND indi = '1' --직접비기준 AND gijun = '1' --공사진행율기준 GROUP BY pjtno, acntcode, [month] ORDER BY acntcode -- 이거는 일단 간접비 배부기준을 92, 93으로 셋팅함 원래는 테이블에서 가져와야 하는데...처리 안됨 DECLARE @totamt2 TABLE ( pjtno VARCHAR(10), [month] VARCHAR(2), totamt DECIMAL, amt92 DECIMAL, amt93 DECIMAL, rate DECIMAL(20,13) ) INSERT INTO @totamt2 SELECT pjtno, [month] -- , totamt = (SUM(CASE WHEN acntcode like '92%' THEN amt ELSE 0 END)+SUM(CASE WHEN acntcode like '93%' THEN amt ELSE 0 END)) , totamt = case when @todate < '20130531' then (SUM(CASE WHEN acntcode like '92%' THEN amt ELSE 0 END)+SUM(CASE WHEN acntcode like '93%' THEN amt ELSE 0 END)) else (SUM(CASE WHEN acntcode like '92%' THEN (case when amt>0 then amt else 0 end) ELSE 0 END)+SUM(CASE WHEN acntcode like '93%' THEN (case when amt>0 then amt else 0 end) ELSE 0 END)) end , amt92 = SUM(CASE WHEN acntcode like '92%' THEN amt ELSE 0 END) , amt93 = SUM(CASE WHEN acntcode like '93%' THEN amt ELSE 0 END) , rate=CONVERT(DECIMAL(20,13),0) FROM ACC.dbo.t23w20 WHERE yy = @yy AND indi = '1' --직접비기준 AND gijun = '1' --공사진행율기준 GROUP BY pjtno, [month] /* pjt별 배부율 할당계산 */ UPDATE @totamt2 SET rate = CONVERT(DECIMAL(20,13), (a.totamt/b.total)) FROM @totamt2 a INNER JOIN ( SELECT [month] , total = SUM(totamt) FROM @totamt2 GROUP BY [month] ) b on a.[month] = b.[month] -- 감가상각비, 퇴충에 대해서 처리 DECLARE @totamt3 TABLE ( pjtno VARCHAR(10), [month] VARCHAR(2), totamt DECIMAL, amt92 DECIMAL, amt93 DECIMAL, rate DECIMAL(20,13) ) INSERT INTO @totamt3 SELECT pjtno , [month] = SUBSTRING(@todate,5,2) -- , [month] = [month] -- , totamt = (SUM(CASE WHEN acntcode like '92%' THEN amt ELSE 0 END)+SUM(CASE WHEN acntcode like '93%' THEN amt ELSE 0 END)) , totamt = case when @todate < '20130531' then (SUM(CASE WHEN acntcode like '92%' THEN amt ELSE 0 END)+SUM(CASE WHEN acntcode like '93%' THEN amt ELSE 0 END)) else (SUM(CASE WHEN acntcode like '92%' THEN (case when amt>0 then amt else 0 end) ELSE 0 END)+SUM(CASE WHEN acntcode like '93%' THEN (case when amt>0 then amt else 0 end) ELSE 0 END)) end , amt92 = SUM(CASE WHEN acntcode like '92%' THEN amt ELSE 0 END) , amt93 = SUM(CASE WHEN acntcode like '93%' THEN amt ELSE 0 END) , rate=CONVERT(DECIMAL(20,13),0) FROM ACC.dbo.t23w20 WHERE yy = @yy AND indi = '1' --직접비기준 AND gijun = '1' --공사진행율기준 GROUP BY pjtno -- , [month] /* pjt별 배부율 할당계산 */ UPDATE @totamt3 SET rate = CONVERT(DECIMAL(20,13), (totamt/(SELECT totamt=SUM(totamt) FROM @totamt3))) SELECT * FROM @totamt1 SELECT * FROM @totamt2 order by pjtno SELECT * FROM @totamt3 order by pjtno SELECT * FROM @temp_s1 order by pjtno SELECT substring(acntcode,1,2) acntcode, mon, sum(slpamt) slpamt FROM @temp_s1 group by substring(acntcode,1,2), mon SELECT * FROM ACC.dbo.t23w20 where yy = @yy /* 재료,노무,경비,외주 간접비 배부 ---------------------------------*/ /* 직접비 구성대로 간접비 구성 */ /* SELECT * ,convert(decimal(20,0),round((a.rate*b.slpamt),0)) FROM @totamt1 a inner join @temp_s1 b on a.acntcode = b.acntcode AND a.month = b.mon WHERE b.acntcode like '93%' */ -- 간접비를 직접재료비에 배부시킨다. Y일 때만 if (@chk_baebu_yn1 = 'Y') BEGIN INSERT INTO ACC.dbo.t23w20 (yy, pjtno, acntcode, indi, [month] , amt , rate, gijun) SELECT @yy, a.pjtno, '91', '2', a.[month] , amt = CONVERT(DECIMAL(20,0), ROUND((a.rate*b.slpamt),0)) , 0, '1' FROM @totamt1 a INNER JOIN @temp_s1 b ON a.acntcode = b.acntcode AND a.[month] = b.mon WHERE b.acntcode ='91' END -- SELECT SUM(amt) FROM t23w20 WHERE indi = '2' GROUP BY SUBSTRING(acntcode,1,2) -- SELECT * FROM t23w20 WHERE indi = '2' AND acntcode like '92%' /* SELECT a.pjtno, b.acntcode, '2', a.month , a.rate, b.slpamt FROM @totamt2 a inner join @temp_s1 b on a.month = b.mon WHERE b.acntcode like '93%' */ -- 간접비를 직접노무비에 배부시킨다. Y일 때만 if (@chk_baebu_yn2 = 'Y') BEGIN INSERT INTO ACC.dbo.t23w20 (yy, pjtno, acntcode, indi, [month], amt, rate, gijun) SELECT @yy, a.pjtno, b.acntcode, '2', a.[month] , amt = SUM(ROUND((a.rate*b.slpamt),0)) , 0, '1' FROM @totamt2 a INNER JOIN @temp_s1 b ON a.[month] = b.mon WHERE b.acntcode LIKE '92%' AND b.acntcode NOT IN ('9200400' ,'9200401' ,'9200402','9200403') GROUP BY a.pjtno, b.acntcode, a.[month] SELECT @yy, a.pjtno, b.acntcode, '2', a.[month] , amt = SUM(ROUND((a.rate*b.slpamt),0)) , rate = SUM(a.rate) , slpamt = SUM(b.slpamt) , 0, '1' FROM @totamt2 a INNER JOIN @temp_s1 b ON a.[month] = b.mon WHERE b.acntcode LIKE '92%' AND b.acntcode NOT IN ('9200400' ,'9200401' ,'9200402','9200403') GROUP BY a.pjtno, b.acntcode, a.[month] INSERT INTO ACC.dbo.t23w20 (yy, pjtno, acntcode, indi, [month], amt, rate, gijun) SELECT @yy, a.pjtno, b.acntcode, '2', a.[month] , amt = SUM(ROUND((a.rate*b.slpamt),0)) , 0, '1' FROM @totamt3 a INNER JOIN @temp_s1 b ON a.[month] = b.mon WHERE b.acntcode IN ('9200400' ,'9200401' ,'9200402','9200403') GROUP BY a.pjtno, b.acntcode, a.[month] END -- 간접비를 직접경비에 배부시킨다. Y일 때만 if (@chk_baebu_yn3 = 'Y') BEGIN IF (@todate < '20130531') -- (SUBSTRING(@todate,5,4) = '0531') BEGIN INSERT INTO ACC.dbo.t23w20 (yy, pjtno, acntcode, indi, [month], amt, rate, gijun) SELECT @yy, a.pjtno, b.acntcode, '2', a.[month] , amt = SUM(ROUND((a.rate*b.slpamt),0)) , 0, '1' FROM @totamt2 a INNER JOIN @temp_s1 b ON a.[month] = b.mon WHERE b.acntcode LIKE '93%' GROUP BY a.pjtno, b.acntcode, a.[month] END ELSE BEGIN INSERT INTO ACC.dbo.t23w20 (yy, pjtno, acntcode, indi, [month], amt, rate, gijun) SELECT @yy, a.pjtno, b.acntcode, '2', a.[month] , amt = SUM(ROUND((a.rate*b.slpamt),0)) , 0, '1' FROM @totamt2 a INNER JOIN @temp_s1 b ON a.[month] = b.mon WHERE b.acntcode LIKE '93%' AND b.acntcode NOT IN ('9303900' ,'9303901' ,'9303902','9303903','9303904','9303905','9303906','9303907','9303908') GROUP BY a.pjtno, b.acntcode, a.[month] INSERT INTO ACC.dbo.t23w20 (yy, pjtno, acntcode, indi, [month], amt, rate, gijun) SELECT @yy, a.pjtno, b.acntcode, '2', a.[month] , amt = SUM(ROUND((a.rate*b.slpamt),0)) , 0, '1' FROM @totamt3 a INNER JOIN @temp_s1 b ON a.[month] = b.mon WHERE b.acntcode IN ('9303900' ,'9303901' ,'9303902','9303903','9303904','9303905','9303906','9303907','9303908') GROUP BY a.pjtno, b.acntcode, a.[month] END -- INSERT INTO -- ACC.dbo.t23w20 -- (yy, pjtno, acntcode, indi, [month], amt, rate, gijun) -- SELECT -- @yy, a.pjtno, b.acntcode, '2', a.[month] -- , amt = SUM(ROUND((a.rate*b.slpamt),0)) -- , 0, '1' -- FROM -- @totamt2 a -- INNER JOIN -- @temp_s1 b -- ON -- a.[month] = b.mon -- WHERE -- b.acntcode LIKE '93%' -- AND b.acntcode NOT IN ('9303900' ,'9303901' ,'9303902','9303903','9303904','9303905','9303906','9303907','9303908') -- GROUP BY -- a.pjtno, b.acntcode, a.[month] -- -- INSERT INTO -- ACC.dbo.t23w20 -- (yy, pjtno, acntcode, indi, [month], amt, rate, gijun) -- SELECT -- @yy, a.pjtno, b.acntcode, '2', a.[month] -- , amt = SUM(ROUND((a.rate*b.slpamt),0)) -- , 0, '1' -- FROM -- @totamt3 a -- INNER JOIN -- @temp_s1 b -- ON -- a.[month] = b.mon -- WHERE -- b.acntcode IN ('9303900' ,'9303901' ,'9303902','9303903','9303904','9303905','9303906','9303907','9303908') -- GROUP BY -- a.pjtno, b.acntcode, a.[month] END -- 간접비를 직접외주비에 배부시킨다. Y일 때만 if (@chk_baebu_yn4 = 'Y') BEGIN INSERT INTO ACC.dbo.t23w20 (yy, pjtno, acntcode, indi, [month], amt, rate, gijun) SELECT @yy, a.pjtno, '94', '2', a.[month] , amt = CONVERT(DECIMAL(20,0),ROUND((a.rate*b.slpamt),0)), 0, '1' FROM @totamt1 a INNER JOIN @temp_s1 b ON a.[month] = b.mon WHERE b.acntcode LIKE '94%' END /*=== 간접비인 경우에 승인전표에서 계정코드가 '5130100' 이 당기 기간의 매출액이 되므로 해당 매출액을 입력한다. */ DECLARE @temp_saleamt TABLE ( pjtno VARCHAR(10), saleamt DECIMAL ) INSERT INTO @temp_saleamt SELECT a.pjtno, saleamt = SUM(a.apvcramt) FROM ( SELECT a.pjtno, a.apvcramt FROM #temp_t23a10 a INNER JOIN ( SELECT DISTINCT a.pjtno FROM ( SELECT distinct c.pjtno_slip pjtno FROM ACC.dbo.t23w60 a JOIN ACC.dbo.t23w50 c ON a.yy = c.yy and a.pjtno = c.pjtno_rep WHERE a.yy = @yy AND a.hg_gijun ='2' UNION SELECT distinct a.pjtno FROM ACC.dbo.t23w60 a WHERE NOT EXISTS ( SELECT * FROM ACC.dbo.t23w50 WHERE a.yy = yy and a.pjtno = pjtno_slip ) AND a.yy = @yy AND a.hg_gijun ='2' ) a ) b ON a.pjtno = b.pjtno WHERE a.apvdate BETWEEN @frdate AND @todate AND a.acntcode = '5130100' UNION ALL SELECT a.pjtno, a.apvcramt FROM ACC.dbo.t23a90 a INNER JOIN ( SELECT DISTINCT a.pjtno FROM ( SELECT distinct c.pjtno_slip pjtno FROM ACC.dbo.t23w60 a JOIN ACC.dbo.t23w50 c ON a.yy = c.yy and a.pjtno = c.pjtno_rep WHERE a.yy = @yy AND a.hg_gijun ='2' UNION SELECT distinct a.pjtno FROM ACC.dbo.t23w60 a WHERE NOT EXISTS ( SELECT * FROM ACC.dbo.t23w50 WHERE a.yy = yy and a.pjtno = pjtno_slip ) AND a.yy = @yy AND a.hg_gijun ='2' ) a ) b ON a.pjtno = b.pjtno WHERE -- a.apvdate BETWEEN @frdate AND @todate 2010.06.16 수정 a.apvdate = @todate AND a.acntcode = '5130100' ) a GROUP BY a.pjtno /*=== 직접비인 경우에 승인전표에서 계정코드가 '2100601','2100602'이고, 사업자번호가 '4118121029'이 아닌 대변금액이 당기 기간의 수금액이 되므로 */ INSERT INTO @temp_saleamt SELECT a.pjtno, saleamt = SUM(a.apvcramt) FROM #temp_t23a10 a INNER JOIN ( -- SELECT DISTINCT a.pjtno -- FROM -- @temp_s2 a -- WHERE -- a.yy = @yy -- AND a.hg_gijun = '1' SELECT DISTINCT a.pjtno FROM ( SELECT distinct c.pjtno_slip pjtno FROM ACC.dbo.t23w60 a JOIN ACC.dbo.t23w50 c ON a.yy = c.yy and a.pjtno = c.pjtno_rep WHERE a.yy = @yy AND a.hg_gijun ='1' UNION SELECT distinct a.pjtno FROM ACC.dbo.t23w60 a WHERE NOT EXISTS ( SELECT * FROM ACC.dbo.t23w50 WHERE a.yy = yy and a.pjtno = pjtno_slip ) AND a.yy = @yy AND a.hg_gijun ='1' ) a ) b ON a.pjtno = b.pjtno WHERE a.apvdate BETWEEN substring(@frdate,1,7)+'2' AND @todate AND a.acntcode in ('2100601','2100602') AND a.vendorcd <> '4118121029' GROUP BY a.pjtno /* 전표등록된 공사코드 ---> 원가계산용 공사코드로 변경 */ UPDATE @temp_saleamt SET pjtno = b.pjtno_rep FROM @temp_saleamt a, ACC.dbo.t23w50 b WHERE b.yy = substring(@frdate,1,4) and a.pjtno = b.pjtno_slip /* 원가계산에 있는 경우에는 업데이트하고 해당 기간에 없는 경우에는 신규로 입력한다.*/ UPDATE ACC.dbo.t23w20 SET saleamt = b.saleamt FROM ACC.dbo.t23w20 a INNER JOIN ( SELECT pjtno, SUM(saleamt) saleamt FROM @temp_saleamt GROUP BY pjtno ) b ON a.yy = @yy AND a.pjtno = b.pjtno INSERT INTO ACC.dbo.t23w20 ( yy, pjtno, amt, rate, indi, acntcode, [month] , gijun , saleamt ) SELECT @yy, a.pjtno, 0, 0, '', '', '' , (SELECT hg_gijun FROM ACC.dbo.t23w60 WHERE yy = @yy AND pjtno = a.pjtno) , SUM(a.saleamt) saleamt FROM @temp_saleamt a WHERE NOT EXISTS ( SELECT DISTINCT pjtno FROM ACC.dbo.t23w20 WHERE yy = @yy AND a.pjtno = pjtno ) GROUP BY a.pjtno -- 해당 기간에 발생되지 않은 자료를 강제로 보여주기 위해서 추가함. INSERT INTO ACC.dbo.t23w20 ( yy, pjtno, amt, rate, indi, acntcode, [month] , gijun , saleamt ) SELECT @yy, a.pjtno, 0, 0, '', '', '' , a.hg_gijun , 0 FROM ACC.dbo.t23w60 a WHERE NOT EXISTS ( SELECT DISTINCT pjtno FROM ACC.dbo.t23w20 WHERE yy = @yy AND a.pjtno = pjtno ) AND a.yy = @yy /*=== 공사진행율기준의 경우에 선수금을 가져오기 위해서 추가 */ UPDATE ACC.dbo.t23w20 SET sunsugum = b.sunsugum FROM ACC.dbo.t23w20 a INNER JOIN ( SELECT a.pjtno, SUM(a.apvcramt) - SUM(a.apvdramt) sunsugum -- 대변 - 차변 FROM #temp_t23a10 a INNER JOIN ( SELECT pjtno FROM ACC.dbo.t23w20 WHERE yy = @yy AND gijun ='1' GROUP BY pjtno ) b ON a.pjtno = b.pjtno WHERE a.apvdate BETWEEN @frdate AND @todate AND a.acntcode in ('2100601','2100602') GROUP BY a.pjtno ) b ON a.yy = @yy AND a.pjtno = b.pjtno -- 노무비 차액 발생하는 것 체크해서 월별로 가장 큰 계정의 금액에 더하거나 뺀다. DECLARE @tmpjan92 TABLE ( seq INT IDENTITY(1,1), mon CHAR(2), amt DECIMAL ) DECLARE @seq INT, @cnt INT, @janamt DECIMAL SET @seq = 1 SET @cnt = 0 SET @janamt = 0 INSERT INTO @tmpjan92 SELECT a.mon, b.amt-a.amt FROM ( SELECT mon = [month], sum(amt) amt FROM ACC.dbo.t23w20 WHERE yy = @yy and acntcode like '92%' GROUP BY [month] ) a JOIN ( SELECT mon, SUM(amt) amt FROM ( SELECT mon = SUBSTRING(apvdate,5,2) , amt = SUM(apvdramt) FROM #temp_t23a10 WHERE acntcode LIKE '92%' AND saupbu = @saupbu AND area = @area AND apvdate >= @frdate AND apvdate <= @todate GROUP BY SUBSTRING(apvdate,5,2) UNION ALL SELECT mon = SUBSTRING(apvdate,5,2) , amt = SUM(apvdramt) FROM ACC.dbo.t23a90 WHERE acntcode LIKE '92%' AND saupbu = @saupbu AND area = @area -- AND apvdate >= @frdate AND apvdate = @todate GROUP BY SUBSTRING(apvdate,5,2) ) a GROUP BY mon ) b ON a.mon = b.mon -- SELECT * FROM @tmpjan92 SELECT @cnt = COUNT(*) FROM @tmpjan92 WHILE(@seq<=@cnt) BEGIN SELECT @janamt = amt FROM @tmpjan92 WHERE seq = @seq UPDATE ACC.dbo.t23w20 SET amt = amt + @janamt FROM ACC.dbo.t23w20 a JOIN ( SELECT TOP 1 pjtno, [month], acntcode FROM ACC.dbo.t23w20 WHERE yy = @yy AND [month] = HRM.dbo.ufn_lpad(@seq, 2, '0') AND acntcode LIKE '92%' AND indi = '2' -- 간접비에 배부해야 함 GROUP BY pjtno, [month], acntcode ORDER BY MAX(amt) DESC ) b ON a.yy = @yy AND a.[month] = b.[month] AND a.pjtno = b.pjtno AND a.acntcode = b.acntcode AND a.indi = '2' -- 간접비에 배부해야 함 SET @seq = @seq + 1 END -- 경비 차액 발생하는 것 체크해서 월별로 가장 큰 계정의 금액에 더하거나 뺀다. DECLARE @tmpjan93 TABLE ( seq INT IDENTITY(1,1), mon CHAR(2), amt DECIMAL ) INSERT INTO @tmpjan93 SELECT a.mon, b.amt-a.amt FROM ( SELECT mon = [month], sum(amt) amt FROM ACC.dbo.t23w20 WHERE yy = @yy AND acntcode LIKE '93%' GROUP BY [month] ) a JOIN ( SELECT mon, SUM(amt) amt FROM ( SELECT mon = SUBSTRING(apvdate,5,2) , amt = SUM(apvdramt) FROM #temp_t23a10 WHERE acntcode LIKE '93%' AND saupbu = @saupbu AND area = @area AND apvdate >= @frdate AND apvdate <= @todate GROUP BY SUBSTRING(apvdate,5,2) UNION ALL SELECT mon = SUBSTRING(apvdate,5,2) , amt = SUM(apvdramt) FROM ACC.dbo.t23a90 WHERE acntcode LIKE '93%' AND saupbu = @saupbu AND area = @area -- AND apvdate >= @frdate AND apvdate = @todate GROUP BY SUBSTRING(apvdate,5,2) ) a GROUP BY mon ) b ON a.mon = b.mon ORDER BY a.mon -- SELECT * FROM @tmpjan93 SET @seq = 1 SET @cnt = 0 SET @janamt = 0 SELECT @cnt = COUNT(*) FROM @tmpjan93 WHILE(@seq<=@cnt) BEGIN SELECT @janamt = amt FROM @tmpjan93 WHERE seq = @seq -- SELECT @janamt UPDATE ACC.dbo.t23w20 SET amt = amt + @janamt FROM ACC.dbo.t23w20 a JOIN ( SELECT TOP 1 pjtno, [month], acntcode FROM ACC.dbo.t23w20 WHERE yy = @yy AND [month] = HRM.dbo.ufn_lpad(@seq, 2, '0') AND acntcode LIKE '93%' AND indi = '2' -- 간접비에 배부해야 함 GROUP BY pjtno, [month], acntcode ORDER BY MAX(amt) DESC ) b ON a.yy = @yy AND a.[month] = b.[month] AND a.pjtno = b.pjtno AND a.acntcode = b.acntcode AND indi = '2' -- 간접비에 배부해야 함 SET @seq = @seq + 1 END