Sql 将两个查询返回的差异作为一个查询的返回

Sql 将两个查询返回的差异作为一个查询的返回,sql,select,sqlite,difference,Sql,Select,Sqlite,Difference,使用以下查询: 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 DateRec

使用以下查询:

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,返回计数的差值?

您只需减去这两个值:

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;

您只需减去这两个值:

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;

您只需减去这两个值:

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;

您只需减去这两个值:

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;

或者,您可以在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;

或者,您可以在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;

或者,您可以在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;

或者,您可以在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;