안녕하세요? 지금 막 축구가 시작했군요....제발 3점 승리를했으면......
다름이 아니라 아래 쿼리는 다른분들도 참고 하세요....유용할거 같은데...
우서 제가 작성한 쿼리를 보여드리겠습니다.(너무길어서 제대로 보여야 할텐데 걱정이군요)
Declare
@Date Char(10)
Set @date = '2000-08-01'
select
substring(B.HBuseoName,1,10) "부서명",
('남자') 성별,
convert(char(6), sum( case when a.hjikchaek = '00010' then 1 else 0 end)) "대표이사",
convert(char(6), sum( case when a.hjikchaek = '00013' then 1 else 0 end)) "전무이사",
convert(char(6), sum( case when a.hjikchaek = '00015' then 1 else 0 end)) "상무이사",
convert(char(6), sum( case when a.hjikchaek = '00017' then 1 else 0 end)) "이사",
convert(char(6), sum( case when a.hjikchaek = '00020' then 1 else 0 end)) "부장",
convert(char(6), sum( case when a.hjikchaek = '00024' then 1 else 0 end)) "과장",
convert(char(6), sum( case when a.hjikchaek = '00026' then 1 else 0 end)) "대리",
convert(char(6), sum( case when a.hjikchaek = '00027' then 1 else 0 end)) "계장",
convert(char(6), sum( case when a.hjikchaek = '00028' then 1 else 0 end)) "주임",
convert(char(6), sum( case when a.hjikchaek = '00030' then 1 else 0 end)) "사원",
convert(char(6), sum( case when a.hjikchaek = '00040' then 1 else 0 end)) "별정"
from
(HM_Master A INNER JOIN CC_Buseo B
On A.HBuseo = B.HBuseo and
SubString(A.HJuminNo,7,1) in (1,3))
where
A.HWork <> '2' or
(A.HWork = '2' and A.DRetire > @Date)
group by
a.HBuseo, b.hbuseoname
union all
/* 부서별 여자 */
select
substring(B.HBuseoName,1,10) "부서명",
('여자') 성별,
convert(char(6), sum( case when a.hjikchaek = '00010' then 1 else 0 end)) "대표이사",
convert(char(6), sum( case when a.hjikchaek = '00013' then 1 else 0 end)) "전무이사",
convert(char(6), sum( case when a.hjikchaek = '00015' then 1 else 0 end)) "상무이사",
convert(char(6), sum( case when a.hjikchaek = '00017' then 1 else 0 end)) "이사",
convert(char(6), sum( case when a.hjikchaek = '00020' then 1 else 0 end)) "부장",
convert(char(6), sum( case when a.hjikchaek = '00024' then 1 else 0 end)) "과장",
convert(char(6), sum( case when a.hjikchaek = '00026' then 1 else 0 end)) "대리",
convert(char(6), sum( case when a.hjikchaek = '00027' then 1 else 0 end)) "계장",
convert(char(6), sum( case when a.hjikchaek = '00028' then 1 else 0 end)) "주임",
convert(char(6), sum( case when a.hjikchaek = '00030' then 1 else 0 end)) "사원",
convert(char(6), sum( case when a.hjikchaek = '00040' then 1 else 0 end)) "별정"
from
(HM_Master A INNER JOIN CC_Buseo B
On A.HBuseo = B.HBuseo and
SubString(A.HJuminNo,7,1) in (2,4))
where
A.HWork <> '2' or
(A.HWork = '2' and A.DRetire > @Date)
group by
a.HBuseo, b.hbuseoname
order by 1
위 쿼리는 "부서별/직책별 인원현황"을 보이는 것입니다. 쿼리결과는
부서명 성별 대표이사 전무이사 상무이사 이사 부장 과장 대리 계장 주임 사원 별정 -------------------- ---- ------ ------ ------ ------ ------ ------ ------------ ------ ------
구매팀 남자 0 0 0 0 0 0 0 0 0 2 0
임원 남자 2 0 0 0 0 0 0 0 0 0 0
임원 여자 1 0 0 0 0 0 0 0 0 0 0
위와 같이 나옵니다. 그런데 이렇게 해놓고 퀵레포트를 구연하려고 하니 좀더 보강해야할것들이 생기더군요. 퀵레포트로 구연하고자 하는 화면입니다.
부서명 성별 대표이사 전무이사 상무이사 이사 부장 과장 대리 계장 주임 사원 별정 합계
-------------------- ---- ------ ------ ------ ------ ------ ------ ------------ ------ ------ ------
구매팀 남자 0 0 0 0 0 0 0 0 0 2 0 ?
임원 남자 2 0 0 0 0 0 0 0 0 0 0 ?
임원 여자 1 0 0 0 0 0 0 0 0 0 0 ?
-------------------------------------------------------------------------------------------------------------------------
합계 남 ? ? ? ? ? ? ? ? ? ? ? ?
녀 ? ? ? ? ? ? ? ? ? ? ? ?
여기서 위 쿼리만 가지고는 합계를 구할수 있나요? 혹시 그런 방법이 있으면 가르쳐 주세요. 아니면 합계부분에 label을 써서 구할수 있는 방법을 알려 주셨으면 합니다. 눈치보여서 축구도 못보고....^^ 저도 초보지만 위 쿼리문 유용할거 같아 많은 분들이 참고 하셨으면 합니다.
글올려놓고 열라 고민해야 할거 같아요.......그럼 다른 분들 즐코하세요.