2016-07-26 2 views
0

두 개의 쿼리가 있습니다. 하나의 표와 두 개의 열을 병합하고 싶습니다. 이 집계 함수 때문에 작동두 개의 열에 두 개의 SQL 쿼리를 병합합니다.

SELECT COUNT(case when IsApproved = 0 then 0 end) as CountNotApproved, 
     COUNT(case when IsApproved = 1 then 1 end) as CountApproved 
FROM Erp_OrderReceipt; 

:

SELECT COUNT(IsApproved) as CountNotApproved 
FROM Erp_OrderReceipt 
WHERE IsApproved = 0 

SELECT COUNT(IsApproved) as CountApproved 
FROM Erp_OrderReceipt 
WHERE IsApproved = 1 

답변

3

를위한 연합 (EU) 및 그룹을 사용할 수 있습니다 무시합니다. NULL 값. CASE의 결과는 조건과 일치하지 않는 모든 행에 대해 NULL입니다.

당신의 DBMS가이 기능을 지원하는 경우 당신은 또한 ANSI SQL filter 절 사용할 수 있습니다

SELECT COUNT(*) FILTER (where IsApproved = 0) as CountNotApproved, 
     COUNT(*) FILTER (where IsApproved = 1) as CountApproved 
FROM Erp_OrderReceipt 
0

당신은 당신이 조건부 집계를 사용할 수

SELECT SUM(CountApproved) CountApproved, 
     SUM(CountNotApproved) CountNotApproved 
FROM 
(
    SELECT 
     0 as CountApproved, 
     COUNT(IsApproved) as CountNotApproved 
    FROM Erp_OrderReceipt where IsApproved=0 
    UNION 
    SELECT 
     COUNT(IsApproved) as CountApproved, 
     0 as CountNotApproved 
    FROM Erp_OrderReceipt where IsApproved=1 
) u 
+0

구문 오류를 ... – jarlh

+0

구문 오류를 제거하기 위해 수정 – Juan

관련 문제