2014-03-27 3 views
0

의 반환으로 두 쿼리에서 반환하기 :의 차이는 아래의 쿼리를 사용하여 하나의 쿼리

Select Count(ID) 
FROM Used 
Where 
    ID = 54 
    AND QTY = 1.875 
    AND DateReceived = '2014-03-27 00:00:00' 
    AND VendorID = 12400 
    AND WithDrawn = 0; 


Select Count(ID) 
FROM Used 
Where 
    ID = 54 
    AND QTY = 1.875 
    AND DateReceived = '2014-03-27 00:00:00' 
    AND VendorID = 12400 
    AND WithDrawn = 1; 

가 어떻게 카운트의 차이를 반환 한 wuery로 결합 할 수 있습니다 ?

답변

3

당신은 두 값을 뺄 수 있습니다, 또는

SELECT (SELECT COUNT(ID) 
     FROM Used 
     WHERE ID = 54 
      AND QTY = 1.875 
      AND DateReceived = '2014-03-27 00:00:00' 
      AND VendorID = 12400 
      AND WithDrawn = 0) - 
     (SELECT COUNT(ID) 
     FROM Used 
     WHERE ID = 54 
      AND QTY = 1.875 
      AND DateReceived = '2014-03-27 00:00:00' 
      AND VendorID = 12400 
      AND WithDrawn = 1); 

을 +1의 값 또는를 구성 -1 각 레코드에 대해, 그 이상 합계 걸릴 : 또는

SELECT SUM(CASE WithDrawn WHEN 0 THEN 1 ELSE -1 END) 
FROM Used 
WHERE ID = 54 
    AND QTY = 1.875 
    AND DateReceived = '2014-03-27 00:00:00' 
    AND VendorID = 12400; 
+0

+1 두 번째 변형입니다. 좋은 분! – Mureinik

0

을 1 스캔에서이 작업을 수행 할 수 있습니다 ...

SELECT 
    (Count(CASE 
    WHEN WithDrawn = 0 
     THEN ID END) 
     - 
    Count(CASE 
    WHEN WithDrawn = 1 
     THEN ID 
    END)) RESULT 
FROM Used 
WHERE ID = 54 
    AND QTY = 1.875 
    AND DateReceived = '2014-03-27 00:00:00' 
    AND VendorID = 12400;