2012-09-26 5 views
3

인 테이블이 Emp 인 경우를 3 개의 열로 가정합니다.동일한 테이블의 두 SELECT 문을 diff로 결합하십시오. 조건이

Manager은 관리자가 EmpId 일 때 1이며, 과 유사합니다.

테이블에서 관리자와 하위의 수를 요구하십시오.

두 개의 검색어를 하나의 SELECT 검색어로 결합 할 수 있습니까?

select count(*) as ManagerNumber from Emp where Manager=1 
select count(*) as Subordinate from Emp where Subb=1. 

답변

9

당신은이 작업을 수행 할 수 있습니다 (한 번만 테이블을 검사 할) :

SELECT 
    SUM(CASE WHEN Manager = 1 THEN 1 ELSE 0 END) AS ManagerNumber, 
    SUM(CASE WHEN subb = 1 THEN 1 ELSE 0 END) AS Subordinate 
FROM Emp 

을 그리고 그것은 SQL ANSI 표준으로, 모든 RDBMS에서 작동합니다.

+0

감사 가말 : 조회가 올바른 종료됩니다, 당신은 단지 널 (null)로 0을 교체해야합니다. count는 0 또는 1인지 여부에 관계없이 모든 값을 계산하지만 null 일 경우 계산되지 않습니다. (관리자 = 1 THEN 1 ELSE 널 (null) 종료하면 CASE) EMP를 FROM 하위 AS –

+0

@a_horse_with_no_name 죄송합니다 지금은 고정 ManagerNumber AS, COUNT (SUBB = 1 THEN 1 ELSE 널 (null) END이 CASE)가 –

0

예, 가능합니다.

select 
    (select count(*) as ManagerNumber from Emp where Manager=1), 
    (select count(*) as Subordinate from Emp where Subb=1) 

아니면 행의 각

select count(*) as ManagerNumber from Emp where Manager=1 
UNION 
    select count(*) as Subordinate from Emp where Subb=1 
+0

모두 문 여전히 스캔 할 COUNT를 선택 두 번 테이블은 Anand가 원하지 않는 것입니다 –

+0

Emp를 한 번만 스캔하고 싶습니다. –

+0

오 질문을 명확하게 이해하지 못했습니다! –

관련 문제