테이블 3개가 있습니다.
1_table 고유번호 / 가격
2_table 고유번호 / 날자 -- dt_81
3_table 고유번호 / 날짜 -- dt_send
이렇게 있는데요.
현제 제가 사용하는 쿼리가
select
substring(REPLACE( REPLACE( REPLACE(CONVERT(VARCHAR(50),dt_81,120),'-',''),':',''),' ',''),5, 2) as mon
,sum(case when (main.cd_app_dept = 'H01')then at_sum2 else 0 end) as CO1Num -- 부서명
from tb_a_app_req as req,tb_a_app_main as main,tb_a_comm as comm , tb_a_app_status as st
where substring(REPLACE( REPLACE( REPLACE(CONVERT(VARCHAR(50),dt_81,120),'-',''),':',''),' ',''),1, 4) = :StartDate
group by substring(REPLACE( REPLACE( REPLACE(CONVERT(VARCHAR(50),dt_81,120),'-',''),':',''),' ',''),5, 2)
order by 1
다른거 빼고 간략하게 표현 해봤습니다.
문제는
특정 부서의 가격은 dt_send 와 비교해서 가져와야 되는데요...
union all 등등 해서 이리저리 뒤지고 .. 책도 다시한번 더 보고;;; 해두
dt_81 에 대한 합계만 나올 뿐 .. dt_send 의 대한 합계는 나오지 않습니다.
조금만 도움 주세요.
Comment 4
-
ssunsori
2015.10.12 17:00
윽;;;
급한 맘에 막 적다 보니 ...
제 쿼리 를 설명 드리면
년도를 적으면 월 단위 매출이 나오는 쿼리 입니다.
근데 일이 생겨서 특성 내용은 dt_send 라는 날짜에서 가격과 비교 한후 가져와 되는데요.
가져오질 못 하네요.
기존에는
1번 과 2번 테이블만 존재 했고
사용자는 2015 선택 하고 검색 누르면
1월 ~ 12월 까지 물론 11월 12월은 0 이겠지요.
1월 ~ 10월 오늘 까지 매출이 합계로 나옵니다.
그런데... 여기서 특성 부서 매출만 3번 테이블에 있는 날짜를 비교해서 가져오라는데 ..
생각은 쉬웠는데 잘 않되서요..
이렇게 적어도 난감하네...
-
Terry
2015.10.12 19:40
저두 잘 이해가 -_-;;;
From 절에 보면 테이블은 4개를 쓰는데
Join 구문은 보이질 않네요? ^^;;
각 테이블별 간략한 샘플데이터와
최종적으로 보여주고자 하는게 어떤 형태인지에 대한 예시
각각의 데이터는 어떤 형태로 서로 Join 되어 처리되어야 하는지
구체적인 예시를 들어주시는게 좋을듯하네요..
특성부서라고 이야기하셨는데 그게 어떤 컬럼인지에 대한 정보도 없거니와
각 테이블들의 FK 등에 대한 아무런 정보도 없고
질문만 보았을때는 서울에서 김서방 찾기와 동일한 난이도인듯해요;;
-
ssunsori
2015.10.13 17:02
select
substring(REPLACE( REPLACE( REPLACE(CONVERT(VARCHAR(50),dt_81,120),'-',''),':',''),' ',''),5, 2) as mon,sum(case when (main.cd_app_dept = 'H01')then at_sum2 else 0 end) as CO1Num -- 부서명 1
,sum(case when (main.cd_app_dept = 'H01')then at_sum2 else 0 end) as CO2Num --부서명 2
from tb_a_app_req as req,tb_a_app_main as main,tb_a_comm as comm , tb_a_app_status as st
where substring(REPLACE( REPLACE( REPLACE(CONVERT(VARCHAR(50),dt_81,120),'-',''),':',''),' ',''),1, 4) = :StartDateand 비교 절
group by substring(REPLACE( REPLACE( REPLACE(CONVERT(VARCHAR(50),dt_81,120),'-',''),':',''),' ',''),5, 2)
order by 1위 쿼리 에서 조건문은 빠졌지만 실행 하면
1~12월 팀별 매출이 나옵니다.
여기서 부서명2 만 테이블 1에서 날짜비교가 아닌 테이블 2에서 날짜 비교해서 가져오게 하고 싶거든요.
부서명2만 테이블 2에서 날짜 비교해서 가져오게 할 수 는 없을까요?
아무리 굴리고 또 굴려도 ... 않되네요.
제가 어렵게 생각하고 있는 걸까요?
질문이 잘 이해가 안되네요..ㅠㅠ
그런데, 날짜에서 월을 구하고 싶으시면 month(dt_81) 로 가능합니다.
같은 방법으로 연을 구하고 싶으시면, year(dt_81) 로 가능합니다.
그러나, 조건에는 가능하면 dt_81 between @StartDate and @EndDate 로 변경하심이...