【问题标题】:Get the difference returned from two queries as the return of one query获取两个查询返回的差值作为一个查询的返回
【发布时间】:2014-03-27 19:50:17
【问题描述】:
使用以下查询:
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?
【问题讨论】:
标签:
sql
select
sqlite
difference
【解决方案1】:
你可以只减去这两个值:
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;
【解决方案2】:
或者,您可以在 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;