SELECT E.NM_TRDPL, A.NM_CLASS, B.NM_BARCODE, '금액' AS DIVISION, -- NM_TRDPL = 업체명, NM_CLASS = 분류명,
NM_BARCODE = 장비명, 구분 = DIVISION
SUM(CASE WHEN SUBSTRING(C.YMD_SALE, 5, 2) = '01' THEN (C.AMT_SALE) ELSE 0 END) AS [JANUARY], -- 1월 금액
SUM(CASE WHEN SUBSTRING(C.YMD_SALE, 5, 2) = '02' THEN (C.AMT_SALE) ELSE 0 END) AS [FEBRUARY], -- 2월 금액
SUM(CASE WHEN SUBSTRING(C.YMD_SALE, 5, 2) = '03' THEN (C.AMT_SALE) ELSE 0 END) AS [MARCH], -- 3월 금액
SUM(CASE WHEN SUBSTRING(C.YMD_SALE, 5, 2) = '04' THEN (C.AMT_SALE) ELSE 0 END) AS [APRILL], -- 4월 금액
SUM(CASE WHEN SUBSTRING(C.YMD_SALE, 5, 2) = '05' THEN (C.AMT_SALE) ELSE 0 END) AS [MAY], -- 5월 금액
SUM(CASE WHEN SUBSTRING(C.YMD_SALE, 5, 2) = '06' THEN (C.AMT_SALE) ELSE 0 END) AS [JUNE], -- 6월 금액
SUM(CASE WHEN SUBSTRING(C.YMD_SALE, 5, 2) BETWEEN '01' AND '06' THEN (C.AMT_SALE) ELSE 0 END) AS [THE FIRST],
-- 상반기 1월 ~ 6월 금액
SUM(CASE WHEN SUBSTRING(C.YMD_SALE, 5, 2) = '07' THEN (C.AMT_SALE) ELSE 0 END) AS [JULY], -- 7월 금액
SUM(CASE WHEN SUBSTRING(C.YMD_SALE, 5, 2) = '08' THEN (C.AMT_SALE) ELSE 0 END) AS [AUGUST], -- 8월 금액
SUM(CASE WHEN SUBSTRING(C.YMD_SALE, 5, 2) = '09' THEN (C.AMT_SALE) ELSE 0 END) AS [SEPTEMBER], -- 9월 금액
SUM(CASE WHEN SUBSTRING(C.YMD_SALE, 5, 2) = '10' THEN (C.AMT_SALE) ELSE 0 END) AS [OCTOBER], -- 10월 금액
SUM(CASE WHEN SUBSTRING(C.YMD_SALE, 5, 2) = '11' THEN (C.AMT_SALE) ELSE 0 END) AS [NOVEMBER], -- 11월 금액
SUM(CASE WHEN SUBSTRING(C.YMD_SALE, 5, 2) = '12' THEN (C.AMT_SALE) ELSE 0 END) AS [DECEMBER], -- 12월 금액
SUM(CASE WHEN SUBSTRING(C.YMD_SALE, 5, 2) BETWEEN '07' AND '12' THEN (C.AMT_SALE) ELSE 0 END) AS [SECOND HALF],
-- 하반기 7월 ~ 12월 금액
SUM(CASE WHEN SUBSTRING(C.YMD_SALE, 5, 2) BETWEEN '01' AND '12' THEN (C.AMT_SALE) ELSE 0 END) AS [TOTAL]
-- 전체 1월 ~ 12월 금액
FROM MS_GOODS_CLASS A
INNER JOIN MS_SALBAR B ON A.CD_STORE = B.CD_STORE AND A.CD_CLASS = B.CD_CLASS
-- MS_GOODS_CLASS 와 MS_SALBAR 테이블의 CD_STORE 컬럼 조인
INNER JOIN SL_SALE_D C ON B.CD_STORE = C.CD_STORE AND B.BARCD_S = C.BARCD_S
-- MS_SALBAR 와 SL_SALE_D 테이블의 CD_STORE 와 BARCD_S 컬럼 조인
INNER JOIN SL_SALE_H D ON C.CD_STORE = D.CD_STORE AND C.YMD_SALE = D.YMD_SALE AND C.NO_POS = D.NO_POS
AND C.NO_RCP = D.NO_RCP
-- SL_SALE_D 와 SL_SALE_H 테이블의 CD_STORE 와 YMD_SALE 과 NO_POS 와 NO_RCP 컬럼 조인
INNER JOIN MS_TRD E ON D.CD_STORE = E.CD_STORE AND D.CD_TRDPL = E.CD_TRDPL
-- SL_SALE_H 와 MS_TRD 테이블의 CD_STORE 와 CD_TRDPL 컬럼 조인
WHERE E.CD_STORE = '0002' --AND C.YMD_SALE = '2012' -- 조건문 추가
GROUP BY E.NM_TRDPL, A.NM_CLASS, B.NM_BARCODE -- 업체명, 분류명, 장비명 컬럼 그룹화
5개의 테이블을 inner join 시켰고, Where절에 회사코드와 날짜에 대한 조건문을 추가했습니다.
Where절을 제외하면 결과값이 잘나오는데, where절만 포함하면 결과값이 0이 됩니다 ㅠㅠ
예) 0001로 검색시 그냥 전체조회되거나, 0002로 검색시 하나도 조회가 안됩니다;
물론 단일테이블로 검색시에 잘조회됩니다;
검색을 해봐도 별다른게 없어보이는데...결과값이 안나와서 이렇게 질문글올립니다 ㅠㅠ
Comment 4
-
처리짱
2013.08.26 20:29
-
MissingYou
2013.08.27 20:56
답변 감사합니다...
아직 해결못했네요 ㅠㅠㅠ
-
건우아빠
2013.08.27 10:06
E.CD_STORE , C.YMD_SALE 컬럼에 보여 줘서 데이타 내용을 보세요...
조회 조건에 맞는 데이타가 없을듯 합니다...
-
MissingYou
2013.08.27 20:57
답변감사합니다..
1번테이블만 회사코드가 여러개의 데이터가 들어있고
2~5번 테이블은 회사코드가 0001인 데이터만 존재하네요;;
http://www.sqler.com/?mid=bSQLQA&document_srl=572763 좀더 자세히 질문글올렸습니다 ㅠㅠ
WHERE E.CD_STORE = '0002' --AND C.YMD_SALE = '2012'
요 부분인거 같은데요.. E.CD_STORE 요기 값을 바꿧는데 안나오면 데이터가 없는거 같고요..
위 SELECT 절에서 유추해 보는데 AND LEFT(C.YMD_SALE, 4) = '2012' 이게 아닐지요?