Files
hallasanup/쿼리/Template/POR 소요예산 변경하기.sql
2026-06-22 18:42:18 +09:00

108 lines
2.8 KiB
Transact-SQL

-- ==========================================
-- 작업일자: YYYY-MM-DD [쿼리 작성 및 실행 날짜를 기록합니다.]
-- 작 성 자: [요청자 이름을 기록합니다.]
-- 작업목적: [쿼리 작성 및 실행 목적 설명]
-- 요청자/티켓번호: [요청 부서 또는 이슈 번호를 기록합니다.]
-- ==========================================
declare @por_no char(8), @por_seq int
declare @amt decimal(16,4)
-- [0] 변경할 데이터 설정
set @por_no = 'P2506009'
set @amt = 4698297087
set @por_seq = 1
-- [1] 대상 데이터 검증 (조회)
select * from HPOIMS.dbo.gm_por_detail where por_no = @por_no and por_seq = @por_seq
-- [2] 발주의뢰서 금액 변경(수정/삭제 시 주석 처리 후 공유 권장)
update HPOIMS.dbo.gm_por_detail set unitp = @amt, amt = @amt, w_unitp = @amt, w_amt = @amt, t_amt = @amt where por_no = @por_no and por_seq = @por_seq
-- [3] 발주의뢰서 금액 변경에 따른 실행예산 투입실적금액 변경(수정/삭제 시 주석 처리 후 공유 권장)
update
HPOIMS.dbo.ys_pbudget
set
x_amt = (b.soyo_amt+b.input_amt)
from
HPOIMS.dbo.ys_pbudget a
join
(
select
*
from
(
select
a.pjt_no, a.main, a.sub, a.bud_seq
, sum(a.bud_amt) bud_amt
, sum(a.bud_x_amt) bud_x_amt
, sum(a.bud_e_amt) bud_e_amt
, sum(a.soyo_amt) soyo_amt
, sum(a.input_amt ) input_amt
from
(
SELECT
pjt_no = a.pjt_no
, main = a.main
, sub = a.sub
, bud_seq = a.bud_seq
, closing_yn = ISNULL(a.closing_yn,'N')
, bud_amt = ISNULL(a.amt,0)
, bud_x_amt = ISNULL(a.x_amt,0)
, bud_e_amt = ISNULL(a.e_amt,0)
, soyo_amt = 0
, input_amt = 0
FROM
HPOIMS.dbo.ys_pbudget a
UNION ALL
SELECT
pjt_no = a.pjt_no
, main = a.main
, sub = a.sub
, bud_seq = a.bud_seq
, closing_yn = ''
, bud_amt = 0
, bud_x_amt = 0
, bud_e_amt = 0
, soyo_amt = SUM(ISNULL(a.w_amt,0))
, input_amt = 0
FROM
HPOIMS.dbo.gm_por_detail a
GROUP BY
a.pjt_no, a.main, a.sub, a.bud_seq
UNION ALL
SELECT
pjt_no = a.pjt_no
, main = a.main
, sub = a.sub
, bud_seq = a.bud_seq
, closing_yn = ''
, bud_amt = 0
, bud_x_amt = 0
, bud_e_amt = 0
, soyo_amt = 0
, input_amt = SUM(ISNULL(a.amt,0))
FROM
HPOIMS.dbo.ys_direct_cost a
GROUP BY
a.pjt_no, a.main, a.sub, a.bud_seq
) a
GROUP BY
a.pjt_no, a.main, a.sub, a.bud_seq
) a
where
a.bud_x_amt <> (a.soyo_amt+a.input_amt)
) b
on
a.pjt_no = b.pjt_no
and a.main = b.main
and a.sub = b.sub
and a.bud_seq = b.bud_seq
and a.pjt_no like '%'
and a.main <> 'AB00'
and a.curr = 'WON'
and ROUND(isnull(a.x_amt,0)*a.base_rate,0) <> (b.soyo_amt+b.input_amt)