수불관련 Query를 사용하여 조회를 하고 있습니다..그런데 이 Query를 돌릴때 마다 로드가 많이 걸리는것 같아..
View를 사용하고자 하는데...어찌 해야 하는지 잘몰라 질문 드립니다...
사용툴을 델파이 입니다...
select distinct
A.met_id, B.met_name,
((select CASE WHEN sum(in_qty) IS NULL THEN 0 ELSE sum(in_qty) END
from tbl_sumhouse as A1
where A1.met_id = A.met_id
and A1.kind_id ='99'
and A1.inout_day >=:jday1
and A1.inout_day <:jday1 ) +
(select CASE WHEN sum(in_qty) IS NULL THEN 0 ELSE sum(in_qty) END
from tbl_sumhouse as A10
where A10.met_id = A.met_id
and A10.kind_id = '00'
and A10.inout_day >=:sday10
and A10.inout_day <:eday10 ) -
(select CASE WHEN sum(in_qty) IS NULL THEN 0 ELSE sum(in_qty) END
from tbl_sumhouse as A11
where A11.met_id = A.met_id
and A11.kind_id = '01'
and A11.inout_day >=:sday11
and A11.inout_day <:eday11)) -
((select CASE WHEN sum(out_qty) IS NULL THEN 0 ELSE sum(out_qty) END
from tbl_sumhouse as A12
where A12.met_id = A.met_id
and A12.kind_id = '00'
and A12.inout_day >=:sday12
and A12.inout_day <:eday12) -
(select CASE WHEN sum(out_qty) IS NULL THEN 0 ELSE sum(out_qty) END
from tbl_sumhouse as A13
where A13.met_id = A.met_id
and A13.kind_id = '02'
and A13.inout_day >=:sday13
and A13.inout_day <:eday13) ) AS junjan ,
(select CASE WHEN sum(in_qty) IS NULL THEN 0 ELSE sum(in_qty) END
from tbl_sumhouse as A2
where A2.met_id = A.met_id
and A2.kind_id = '00'
and A2.inout_day >=:sday2
and A2.inout_day <=:eday2) AS jipgo ,
(select CASE WHEN sum(in_qty) IS NULL THEN 0 ELSE sum(in_qty) END
from tbl_sumhouse as A3
where A3.met_id = A.met_id
and A3.kind_id = '01'
and A3.inout_day >=:sday3
and A3.inout_day <=:eday3) AS jipgoban ,
((select CASE WHEN sum(in_qty) IS NULL THEN 0 ELSE sum(in_qty) END
from tbl_sumhouse as A4
where A4.met_id = A.met_id
and A4.kind_id = '00'
and A4.inout_day >=:sday4
and A4.inout_day <=:eday4) -
(select CASE WHEN sum(in_qty) IS NULL THEN 0 ELSE sum(in_qty) END
from tbl_sumhouse as A5
where A5.met_id = A.met_id
and A5.kind_id = '01'
and A5.inout_day >=:sday5
and A5.inout_day <=:eday5)) AS netipgo ,
(select CASE WHEN sum(out_qty) IS NULL THEN 0 ELSE sum(out_qty) END
from tbl_sumhouse as A6
where A6.met_id = A.met_id
and A6.kind_id = '00'
and A6.inout_day >=:sday6
and A6.inout_day <=:eday6) AS jout ,
(select CASE WHEN sum(out_qty) IS NULL THEN 0 ELSE sum(out_qty) END
from tbl_sumhouse as A7
where A7.met_id = A.met_id
and A7.kind_id = '02'
and A7.inout_day >=:sday7
and A7.inout_day <=:eday7) AS joutban ,
((select CASE WHEN sum(out_qty) IS NULL THEN 0 ELSE sum(out_qty) END
from tbl_sumhouse as A8
where A8.met_id = A.met_id
and A8.kind_id = '00'
and A8.inout_day >=:sday8
and A8.inout_day <=:eday8) -
(select CASE WHEN sum(out_qty) IS NULL THEN 0 ELSE sum(out_qty) END
from tbl_sumhouse as A9
where A9.met_id = A.met_id
and A9.kind_id = '02'
and A9.inout_day >=:sday9
and A9.inout_day <=:eday9)) AS netout ,
((select CASE WHEN sum(in_qty) IS NULL THEN 0 ELSE sum(in_qty) END
from tbl_sumhouse as A14
where A14.met_id = A.met_id
and A14.kind_id = '99'
and A14.inout_day >=:jday14
and A14.inout_day <:jday14 ) +
(select CASE WHEN sum(in_qty) IS NULL THEN 0 ELSE sum(in_qty) END
from tbl_sumhouse as A15
where A15.met_id = A.met_id
and A15.kind_id = '00'
and A15.inout_day >=:sday15
and A15.inout_day <=:eday15 ) -
(select CASE WHEN sum(in_qty) IS NULL THEN 0 ELSE sum(in_qty) END
from tbl_sumhouse as A16
where A16.met_id = A.met_id
and A16.kind_id = '01'
and A16.inout_day >=:sday16
and A16.inout_day <=:eday16)) -
((select CASE WHEN sum(out_qty) IS NULL THEN 0 ELSE sum(out_qty) END
from tbl_sumhouse as A17
where A17.met_id = A.met_id
and A17.kind_id = '00'
and A17.inout_day >=:sday17
and A17.inout_day <=:eday17) -
(select CASE WHEN sum(out_qty) IS NULL THEN 0 ELSE sum(out_qty) END
from tbl_sumhouse as A18
where A18.met_id = A.met_id
and A18.kind_id = '02'
and A18.inout_day >=:sday18
and A18.inout_day <=:eday18 )) AS dangjan
from tbl_sumhouse A, tbl_metrial B
where A.met_id = B.met_id
group by A.met_id, B.met_name
order by A.met_id asc
Comment 1
-
처리짱
2015.07.23 18:46
헐...
CASE WHEN 구문으로 정리가 될거 같은데요..