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;