2014-12-08 7 views
1

하나의 결과로 결합해야하는 두 가지 선택 쿼리가 있습니다.두 개의 select count 문 합계 얻기

/* Count of all classes students have passed */ 
/* A */ 
SELECT COUNT(TECH_ID) as Number1, ct.SUBJ, ct.COU_NBR 
FROM [ISRS].[ST_COU] st 
JOIN [ISRS].[CT_COU_SQL] ct 
ON st.COU_ID = ct.COU_ID 
WHERE GRADE = 'A' OR Grade = 'B' or Grade = 'C' 
GROUP BY ct.SUBJ, ct.COU_NBR 

/* Total Count of all students who needed to take a course */ 
/* B */ 
SELECT COUNT(TECH_ID) as Number2, ec.SUBJ, ec.COU_NBR 
FROM [dbo].[ST_MAJOR_COMMENT] st JOIN [dbo].[Emphasis_Class] ec 
ON st.MAJOR = ec.Emphasis 
GROUP BY ec.SUBJ, ec.COU_NBR 

나는 (B - A) 흔들림 감지, COU_NBR, 합계를 필요

+1

"mysql"이라는 질문에 태그를 추가했지만 구문에 SQL Server가 표시되었습니다. 어떤 데이터베이스를 사용하고 계십니까? –

답변

1

당신은 열팽창 계수에 SQL 쿼리를 가질 수 있고 다음 조인 않고 group by

with cte1 
as 
(
    first query 
) 
, cte2 
as 
(
    second query 
) 
select cte1.subj, cte1.cou_nbr, sum(cte2.number2 - cte1.number1) as difference 
from cte1 
join cte2 
on cte1.subj = cte2.subj 
and cte1.cou_nbr = cte2.cou_nbr 
group by cte1.subj, cte1.cou_nbr 
+0

위대한 작품, 대단히 감사합니다! –

+0

@chadstratman, 오타였습니다. cte1.subj로 바꿉니다 – radar

+0

2 개의 검색어가 이미 그룹화되어 있으므로'group by '이 필요하지 않습니다. –

1

사용 조합 :

select sum(Number1) from (
    SELECT COUNT(TECH_ID) as Number1 
    -- onit all other columns from select then rest of query 1 
    UNION 
    -- just the count column selected then rest of query 2 
) x 

이 구문은 대부분의 데이터베이스에서 작동합니다.