Files
hallasanup/쿼리/Template/본예산승인오류검토하기.sql
2026-06-23 17:45:48 +09:00

150 lines
3.4 KiB
Transact-SQL

-- ==========================================
-- 작업일자: YYYY-MM-DD [쿼리 작성 및 실행 날짜를 기록합니다.]
-- 작 성 자: [실행자 이름을 기록합니다.]
-- 작업목적: [예산승인오류가 발생했을 시 확인합니다.]
-- 요청자/티켓번호: [예산승인부서의 요청시 검토하는 용도입니다.]
-- 데이타베이스 : MS-SQL
-- ==========================================
declare @pjt_no CHAR(8)
, @bud_gbn CHAR(1)
, @chasu TINYINT
, @update_id CHAR(7)
, @change_why_gbn CHAR(7)
, @cnt int
DECLARE @tmp_pbudget TABLE
(
pjt_no CHAR(8)
, main CHAR(4)
, sub CHAR(4)
, bud_seq INT
, x_amt DECIMAL
)
select @pjt_no = 'V172T305', @bud_gbn='M'
-- POR
INSERT
@tmp_pbudget
SELECT
a.pjt_no, a.main, a.sub, a.bud_seq, isnull(SUM(b.amt),0) x_amt -- SUM(b.w_amt)
FROM
HPOIMS.dbo.gm_por_detail a
LEFT OUTER JOIN
(
SELECT
por_no, por_seq, SUM(amt) amt, SUM(w_amt) w_amt , SUM(qty) qty
FROM
HPOIMS.dbo.gm_po_detail
GROUP BY
por_no, por_seq
)b
ON
a.por_no = b.por_no and a.por_seq = b.por_seq
WHERE
a.pjt_no = @pjt_no
-- AND a.qty = b.qty
AND a.w_amt > b.w_amt
GROUP BY
a.pjt_no, a.main, a.sub, a.bud_seq
INSERT
@tmp_pbudget
SELECT
a.pjt_no, a.main, a.sub, a.bud_seq, isnull(SUM(b.w_amt),0) x_amt -- SUM(b.w_amt)
FROM
HPOIMS.dbo.gm_por_detail a
LEFT OUTER JOIN
(
SELECT
por_no, por_seq, SUM(amt) amt, SUM(w_amt) w_amt , SUM(qty) qty
FROM
HPOIMS.dbo.gm_po_detail
GROUP BY
por_no, por_seq
)b
ON
a.por_no = b.por_no AND a.por_seq = b.por_seq
WHERE
a.pjt_no = @pjt_no
-- AND a.qty = b.qty
AND a.w_amt <= b.w_amt
GROUP BY
a.pjt_no, a.main, a.sub, a.bud_seq
INSERT
@tmp_pbudget
SELECT
a.pjt_no, a.main, a.sub, a.bud_seq, isnull(SUM(b.w_amt),0) x_amt
FROM
HPOIMS.dbo.gm_por_detail a
LEFT OUTER JOIN
(
SELECT
por_no, por_seq, SUM(amt) amt, SUM(w_amt) w_amt , SUM(qty) qty
FROM
HPOIMS.dbo.gm_po_detail
GROUP BY
por_no, por_seq
)b
ON
a.por_no = b.por_no AND a.por_seq = b.por_seq
WHERE
a.pjt_no = @pjt_no
AND b.w_amt IS NULL
GROUP BY
a.pjt_no, a.main, a.sub, a.bud_seq
-- 직접비
INSERT
@tmp_pbudget
SELECT
a.pjt_no, a.main, a.sub, a.bud_seq, SUM(a.amt*a.base_rate) x_amt
FROM
HPOIMS.dbo.ys_direct_cost a
WHERE
a.pjt_no = @pjt_no
GROUP BY
a.pjt_no, a.main, a.sub, a.bud_seq
SELECT
@cnt = COUNT(*)
FROM
(
SELECT pjt_no, main, sub, bud_seq, SUM(x_amt) x_amt FROM @tmp_pbudget GROUP BY pjt_no, main, sub, bud_seq
)b
LEFT OUTER JOIN
HPOIMS.dbo.ys_mbudget a
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.bud_gbn = @bud_gbn -- 'M'
WHERE
b.pjt_no = @pjt_no
AND ISNULL(a.w_amt,0) < ISNULL(b.x_amt,0)
AND b.main+b.sub not in ('AB33001', 'AB33002') -- 원가안분 인 경우에는 제외(2011.05.04)
SELECT
b.pjt_no, b.main, b.sub, b.bud_seq, ISNULL(a.w_amt,0) m_amt, ISNULL(b.x_amt,0) x_amt
FROM
(
SELECT pjt_no, main, sub, bud_seq, SUM(x_amt) x_amt FROM @tmp_pbudget GROUP BY pjt_no, main, sub, bud_seq
)b
LEFT OUTER JOIN
HPOIMS.dbo.ys_mbudget a
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.bud_gbn = @bud_gbn -- 'M'
WHERE
b.pjt_no = @pjt_no
AND ISNULL(a.w_amt,0) < ISNULL(b.x_amt,0)
AND b.main+b.sub not in ('AB33001', 'AB33002') -- 원가안분 인 경우에는 제외(2011.05.04)