update lsokzk_tbl lso set lso.LSZ_TEHAI_ZANSUU = (select tehai.tehaizan from
(select sum(a.tehaizan) as tehaizan, b.LSZ_LSKCD, b.LSZ_LSOKCD, b.LSZ_HINCD, b.LSZ_KAKU
from
(select HAC_CHUUMON_NO,
HAC_HINCD,
HAC_KAKU,
HAC_LSKCD,
HAC_LSOKCD,
(HAC_HATSU-HAC_NOUNSUU+HAC_UCHIKAN_SU) as tehaizan
from hacchu_tbl
where HAC_HATSU-HAC_NOUNSUU+HAC_UCHIKAN_SU >0
union
select HAC_CHUUMON_NO,
HAC_HINCD,
HAC_KAKU,
HAC_LSKCD,
HAC_LSOKCD,
case when
(HAC_HATSU-HAC_NOUNSUU+HAC_UCHIKAN_SU)<=0 then 0 end
from hacchu_tbl
where HAC_HATSU-HAC_NOUNSUU+HAC_UCHIKAN_SU <=0) a, lsokzk_tbl b
where a.HAC_HINCD = b.LSZ_HINCD
and a.HAC_KAKU = b.LSZ_KAKU
and a.HAC_LSKCD = b.LSZ_LSKCD
and a.HAC_LSOKCD = b.LSZ_LSOKCD
group by b.LSZ_LSKCD, b.LSZ_LSOKCD, b.LSZ_HINCD, b.LSZ_KAKU
) tehai
where
lso.LSZ_HINCD = tehai.LSZ_HINCD
and lso.LSZ_LSKCD = tehai.LSZ_LSKCD
and lso.LSZ_LSOKCD = tehai.LSZ_LSOKCD
and lso.LSZ_KAKU = tehai.LSZ_KAKU)
where exists (select 1 from
(select sum(a.tehaizan) as tehaizan, b.LSZ_LSKCD, b.LSZ_LSOKCD, b.LSZ_HINCD, b.LSZ_KAKU
from
(select HAC_CHUUMON_NO,
HAC_HINCD,
HAC_KAKU,
HAC_LSKCD,
HAC_LSOKCD,
(HAC_HATSU-HAC_NOUNSUU+HAC_UCHIKAN_SU) as tehaizan
from hacchu_tbl
where HAC_HATSU-HAC_NOUNSUU+HAC_UCHIKAN_SU >0
union
select HAC_CHUUMON_NO,
HAC_HINCD,
HAC_KAKU,
HAC_LSKCD,
HAC_LSOKCD,
case when
(HAC_HATSU-HAC_NOUNSUU+HAC_UCHIKAN_SU)<=0 then 0 end
from hacchu_tbl
where HAC_HATSU-HAC_NOUNSUU+HAC_UCHIKAN_SU <=0) a, lsokzk_tbl b
where a.HAC_HINCD = b.LSZ_HINCD
and a.HAC_KAKU = b.LSZ_KAKU
and a.HAC_LSKCD = b.LSZ_LSKCD
and a.HAC_LSOKCD = b.LSZ_LSOKCD
group by b.LSZ_LSKCD, b.LSZ_LSOKCD, b.LSZ_HINCD, b.LSZ_KAKU
) tehai
where
lso.LSZ_HINCD = tehai.LSZ_HINCD
and lso.LSZ_LSKCD = tehai.LSZ_LSKCD
and lso.LSZ_LSOKCD = tehai.LSZ_LSOKCD
and lso.LSZ_KAKU = tehai.LSZ_KAKU);
(select sum(a.tehaizan) as tehaizan, b.LSZ_LSKCD, b.LSZ_LSOKCD, b.LSZ_HINCD, b.LSZ_KAKU
from
(select HAC_CHUUMON_NO,
HAC_HINCD,
HAC_KAKU,
HAC_LSKCD,
HAC_LSOKCD,
(HAC_HATSU-HAC_NOUNSUU+HAC_UCHIKAN_SU) as tehaizan
from hacchu_tbl
where HAC_HATSU-HAC_NOUNSUU+HAC_UCHIKAN_SU >0
union
select HAC_CHUUMON_NO,
HAC_HINCD,
HAC_KAKU,
HAC_LSKCD,
HAC_LSOKCD,
case when
(HAC_HATSU-HAC_NOUNSUU+HAC_UCHIKAN_SU)<=0 then 0 end
from hacchu_tbl
where HAC_HATSU-HAC_NOUNSUU+HAC_UCHIKAN_SU <=0) a, lsokzk_tbl b
where a.HAC_HINCD = b.LSZ_HINCD
and a.HAC_KAKU = b.LSZ_KAKU
and a.HAC_LSKCD = b.LSZ_LSKCD
and a.HAC_LSOKCD = b.LSZ_LSOKCD
group by b.LSZ_LSKCD, b.LSZ_LSOKCD, b.LSZ_HINCD, b.LSZ_KAKU
) tehai
where
lso.LSZ_HINCD = tehai.LSZ_HINCD
and lso.LSZ_LSKCD = tehai.LSZ_LSKCD
and lso.LSZ_LSOKCD = tehai.LSZ_LSOKCD
and lso.LSZ_KAKU = tehai.LSZ_KAKU)
where exists (select 1 from
(select sum(a.tehaizan) as tehaizan, b.LSZ_LSKCD, b.LSZ_LSOKCD, b.LSZ_HINCD, b.LSZ_KAKU
from
(select HAC_CHUUMON_NO,
HAC_HINCD,
HAC_KAKU,
HAC_LSKCD,
HAC_LSOKCD,
(HAC_HATSU-HAC_NOUNSUU+HAC_UCHIKAN_SU) as tehaizan
from hacchu_tbl
where HAC_HATSU-HAC_NOUNSUU+HAC_UCHIKAN_SU >0
union
select HAC_CHUUMON_NO,
HAC_HINCD,
HAC_KAKU,
HAC_LSKCD,
HAC_LSOKCD,
case when
(HAC_HATSU-HAC_NOUNSUU+HAC_UCHIKAN_SU)<=0 then 0 end
from hacchu_tbl
where HAC_HATSU-HAC_NOUNSUU+HAC_UCHIKAN_SU <=0) a, lsokzk_tbl b
where a.HAC_HINCD = b.LSZ_HINCD
and a.HAC_KAKU = b.LSZ_KAKU
and a.HAC_LSKCD = b.LSZ_LSKCD
and a.HAC_LSOKCD = b.LSZ_LSOKCD
group by b.LSZ_LSKCD, b.LSZ_LSOKCD, b.LSZ_HINCD, b.LSZ_KAKU
) tehai
where
lso.LSZ_HINCD = tehai.LSZ_HINCD
and lso.LSZ_LSKCD = tehai.LSZ_LSKCD
and lso.LSZ_LSOKCD = tehai.LSZ_LSOKCD
and lso.LSZ_KAKU = tehai.LSZ_KAKU);
/* Formatted on 2008/07/23 13:29 (Formatter Plus v4.8.7) */
UPDATE lsokzk_tbl lso
SET lso.lsz_tehai_zansuu =
(SELECT tehai.tehaizan
FROM (SELECT SUM (a.tehaizan) AS tehaizan, b.lsz_lskcd,
b.lsz_lsokcd, b.lsz_hincd, b.lsz_kaku
FROM (SELECT hac_chuumon_no, hac_hincd, hac_kaku,
hac_lskcd, hac_lsokcd,
(hac_hatsu - hac_nounsuu + hac_uchikan_su
) AS tehaizan
FROM hacchu_tbl
WHERE hac_hatsu - hac_nounsuu + hac_uchikan_su >
0
UNION
SELECT hac_chuumon_no, hac_hincd, hac_kaku,
hac_lskcd, hac_lsokcd,
CASE
WHEN ( hac_hatsu
- hac_nounsuu
+ hac_uchikan_su
) <= 0
THEN 0
END
FROM hacchu_tbl
WHERE hac_hatsu - hac_nounsuu + hac_uchikan_su <=
0) a,
lsokzk_tbl b
WHERE a.hac_hincd = b.lsz_hincd
AND a.hac_kaku = b.lsz_kaku
AND a.hac_lskcd = b.lsz_lskcd
AND a.hac_lsokcd = b.lsz_lsokcd
GROUP BY b.lsz_lskcd, b.lsz_lsokcd, b.lsz_hincd,
b.lsz_kaku) tehai
WHERE lso.lsz_hincd = tehai.lsz_hincd
AND lso.lsz_lskcd = tehai.lsz_lskcd
AND lso.lsz_lsokcd = tehai.lsz_lsokcd
AND lso.lsz_kaku = tehai.lsz_kaku)
WHERE EXISTS (
SELECT 1
FROM (SELECT SUM (a.tehaizan) AS tehaizan, b.lsz_lskcd,
b.lsz_lsokcd, b.lsz_hincd, b.lsz_kaku
FROM (SELECT hac_chuumon_no, hac_hincd, hac_kaku,
hac_lskcd, hac_lsokcd,
(hac_hatsu - hac_nounsuu + hac_uchikan_su
) AS tehaizan
FROM hacchu_tbl
WHERE hac_hatsu - hac_nounsuu + hac_uchikan_su >
0
UNION
SELECT hac_chuumon_no, hac_hincd, hac_kaku,
hac_lskcd, hac_lsokcd,
CASE
WHEN ( hac_hatsu
- hac_nounsuu
+ hac_uchikan_su
) <= 0
THEN 0
END
FROM hacchu_tbl
WHERE hac_hatsu - hac_nounsuu + hac_uchikan_su <=
0) a,
lsokzk_tbl b
WHERE a.hac_hincd = b.lsz_hincd
AND a.hac_kaku = b.lsz_kaku
AND a.hac_lskcd = b.lsz_lskcd
AND a.hac_lsokcd = b.lsz_lsokcd
GROUP BY b.lsz_lskcd, b.lsz_lsokcd, b.lsz_hincd, b.lsz_kaku) tehai
WHERE lso.lsz_hincd = tehai.lsz_hincd
AND lso.lsz_lskcd = tehai.lsz_lskcd
AND lso.lsz_lsokcd = tehai.lsz_lsokcd
AND lso.lsz_kaku = tehai.lsz_kaku);
先select看一下数据!
set autotrace on
看一下执行计划,然后贴上来
就能看到语句的执行计划