Mysql 합병 결과 가로 연결 필드 의 실현 절차

머리말
최근 에 보고 서 를 작성 하 는 기능 에서 이런 수 요 는 각 부서 가 특정한 달 에 입사 하고 이 직 한 사람 수 를 통계 하 는 것 이다.
나의 절차
입사 인원 부터 알 아내.

SELECT dept ,COUNT(1) rcNumber FROM     
WHERE (      != ''
  OR      IS NOT NULL) and DATE_FORMAT(    , '%Y-%m')= '2019-09'
GROUP BY   ID
ORDER BY     
조회 기록

이 직 한 사람의 수 를 조회 합 니 다 sql:

SELECT dept ,COUNT(1) rcNumber FROM     
WHERE (      != ''
  OR      IS NOT NULL) and DATE_FORMAT(    , '%Y-%m')= '2019-09'
GROUP BY   ID
ORDER BY     
결과 집합

제 가 원 하 는 데 이 터 는 이 렇 습 니 다.

나 는 다음 과 같은 시 도 를 했다.
1.나 는 두 개의 조회 결 과 를 두 개의 표 로 보고 left join 을 사용 했다.   솔직히 데이터 형식 은 제 가 원 하 는 건 데 오른쪽 표 의 기록 이 많 으 면 데이터 가 적 잖 아 요.(right 동 리)
2.유 니 온 all 사용  이것 은 원 하 는 데이터 가 아니 라 두 결 과 를 수직 으로 연결 합 니 다.
3.저 는 이런 select*from a,b 를 사 용 했 습 니 다.  이 결 과 는 피리 칼 적 이다.  두 시 계 를 곱 한 결과.
이상 방법의 sql 은 뜻 을 붙 이지 않 고 명확 해 야 합 니 다.
나 는 믿 지 못 하 겠 다 고 바 이 두 에 게 계속 물 었 다.바 이 두 는 마침내 대답 을 하 자 나 는 한 번 시도 했다.
1.입사 sql 처 리 는 다음 과 같다.

SELECT a.dept,a.rcNumber,0 as lcNumber FROM (SELECT dept ,COUNT(1) rcNumber FROM     
WHERE (      != ''
  OR      IS NOT NULL) and DATE_FORMAT(    , '%Y-%m')= '2019-09'
GROUP BY   ID
ORDER BY     ) a
이 직 sql 처 리 는 다음 과 같 습 니 다.

SELECT a.dept,a.lcNumber,0 as rcNumber FROM (SELECT dept ,COUNT(1) rcNumber FROM     
WHERE (      != ''
  OR      IS NOT NULL) and DATE_FORMAT(    , '%Y-%m')= '2019-09'
GROUP BY   ID
ORDER BY     ) a
겉 에 빵 을 한 겹 도 싸 지 않 고 원래 sql 에 저 는 기본 문 구 를 파괴 하지 않 기 위해 서 입 니 다.물론 부족 합 니 다.
2.두 문 구 를 수직 으로 연결 하고 연합 sum 을 결합 합 니 다.

SELECT dept ,sum(cm_1) as rcNumber,sum(cm_0) as lcNumber FROM( SELECT c.id,c.dept,SUM(c.lcNumber) as cm_0,c.rcNumber as cm_1 FROM 
(SELECT a.dept,a.rcNumber,0 as lcNumber FROM (SELECT dept ,COUNT(1) rcNumber FROM     
WHERE (      != ''
  OR      IS NOT NULL) and DATE_FORMAT(    , '%Y-%m')= '2019-09'
GROUP BY   ID
ORDER BY     ) a) c GROUP BY c.dept
UNION ALL 
SELECT d.id,d.dept,d.lcNumber as cm_0,SUM(d.rcNumber) as cm_1 FROM 
(SELECT a.dept,a.lcNumber,0 as rcNumber FROM (SELECT dept ,COUNT(1) rcNumber FROM     
WHERE (      != ''
  OR       IS NOT NULL) and DATE_FORMAT(    , '%Y-%m')= '2019-09'
GROUP BY   ID
ORDER BY     ) a) d GROUP BY d.dept) t GROUP BY t.dept ORDER BY t.id
결국 내 가 원 하 는 결 과 를 얻 었 다.

총결산
Mysql 합병 결과 에 대한 가로 연결 필드 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 Mysql 합병 결과 에 대한 가로 연결 필드 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기