2017-03-18 2 views
0

두 개의 groupby 쿼리가 있으며 각 각 compnay_id에 대한 행 수는 모두 company_id로 그룹화됩니다. 나는 SQL의 전문가가 아니에요하지만 당신을 위해 작업을 가입 LEFT 것모든 쿼리의 열을 하나의 열로 인쇄합니다.

select count(*) as qty1 
from T_MISSION 
where datepart(month, [mdatetime])=12 
group by company_id 

union all 

select count(*) as qty2 
from T_CUSTSK 
where datepart(month, [sdate])=12 
group by company_id 

답변

0

간단한 해결책은 다음과 같습니다

select sum(qty1), sum(qty2), company_id 
from 
(
select count(*) as qty1, 0 as qty2, company_id 
from T_MISSION 
where datepart(month, [mdatetime])=12 
group by company_id 

union all 

select 0 as qty1, count(*) as qty2, company_id 
from T_CUSTSK 
where datepart(month, [sdate])=12 
group by company_id 
) as combined 
group by company_id 

아이디어는 : 각 값에 대해 별도의 열을 사용합니다. 이상하게 섞이지 않도록 다른 모든 열을 각 데이터 수집 당 0으로 설정하십시오. 마지막으로 모든 고객을 합산하여 (고객 당) 열과 고객 당 정확히 하나의 값이되도록하십시오. 다른 모든 값은 0입니다.

이 작은 트릭을 사용하면 다른 관련이없는 데이터를 믹싱 할 수 있습니다.

+0

왜 sum() 함수를 사용 했습니까? – Alexxx

+0

답변에 대한 설명을 참조하십시오. Sum() 실제로 행을 결합하는 트릭입니다. – RuDevel

0

: 나를 위해 노조 나던 작품은, 열 qty1, qty2를 출력합니다 출력 하나 개의 쿼리에 COMPANY_ID해야합니까? https://www.w3schools.com/sql/sql_join_left.asp

+0

아니요. 그룹별로 각 쿼리에서 2 카운트가 있기 때문에 모든 최종 테이블에서 그룹화해야한다고 가정하기 때문에 두 회사 모두 동일한 group_id로 그룹화했기 때문에 – Alexxx

관련 문제