안녕하세요..
쿼리 를 수정하는데.. 도움을 받고자 합니다..
잘 사용하던 쿼리인데요.. 어느 순간부터 느려져서 시간을 너무 많이 잡아 먹네요..ㅠㅠ
사용중인 쿼리는
SELECT SUM(STCK_INFO.AMT1) AS TOT1,
.......
SUM(STCK_INFO.AMT12) AS TOT12
from(
CASE STCK.BASI_DT WHEN @DATE1 THEN
(ISNULL(SUM(STCK.CYOVQ),0)+ISNULL(SUM(STCK.EWHQ),0)-ISNULL(SUM(STCK.XWHQ),0))*(OGPRC1.OG_PRC) ELSE 0 END AMT1,
....
(ISNULL(SUM(STCK.CYOVQ),0)+ISNULL(SUM(STCK.EWHQ),0)-ISNULL(SUM(STCK.XWHQ),0))*(OGPRC12.OG_PRC) ELSE 0 END AMT12
FROM TBL_DD_STCK_INFO STCK
JOIN (
SELECT ISNULL(OG_PRC,0) AS OG_PRC, A.GDS_CD
FROM TBL_GDS_OGPRC_HSTY A
JOIN (
SELECT MAX(SEQ) AS 'SEQ', GDS_CD
FROM TBL_GDS_OGPRC_HSTY
WHERE CONVERT(NVARCHAR(8) , BGN_DT, 112) <= '20120131'
GROUP BY GDS_CD
) B
ON A.GDS_CD = B.GDS_CD AND A.SEQ = B.SEQ
) OGPRC1
where .......
이런 형식입니다.. 보시는 바와 같이.. 1월 부터 12월까지 금액을 구하는데요..
하단 부분에.. 각해당하는 월에 대한 값을 가져와서 계산을 합니다..
JOIN (
SELECT ISNULL(OG_PRC,0) AS OG_PRC, A.GDS_CD
FROM TBL_GDS_OGPRC_HSTY A
JOIN (
SELECT MAX(SEQ) AS 'SEQ', GDS_CD
FROM TBL_GDS_OGPRC_HSTY
WHERE CONVERT(NVARCHAR(8) , BGN_DT, 112) <= '20120131' // 여기가 일자.
GROUP BY GDS_CD
) B
이부분이 12개 가되죠...
1월부터 12월까지.. 좀더 효율적으로 할수는 없나요.??
이것저럭 해보는데.. 잘 안되고 있습니다..
고수님들 도움 부탁 드리겠습니다. |