![](/img/trans.png)
[英]COALESCE(SUM(), 0) JOINED table column with GROUP BY not showing all results
[英]SUM() the results of GROUP BY column
表格'volcado':id,reserva,candidad
用以下查詢:
SELECT (CASE
WHEN sum(cantidad) > 0 THEN 1
WHEN sum(cantidad) <= 0 THEN 0
END) AS suma
FROM volcado
GROUP BY reserva
結果是:
╔══════╗
║ suma ║
╠══════╣
║ 1 ║
║ 1 ║
║ 0 ║
║ 1 ║
║ 0 ║
╚══════╝
我需要查詢的結果將是:3
如何在同一查詢中對Suma的行進行SUM()?
我不使用它運行:
SELECT SUM(SELECT (CASE
WHEN sum(cantidad) > 0 THEN 1
WHEN sum(cantidad) <= 0 THEN 0
END) AS suma FROM volcado GROUP BY reserva)
FROM volcado
錯誤:
子查詢返回1行以上
提前致謝。
試試這個
SELECT SUM(a.suma) from
(SELECT (CASE
WHEN sum(cantidad) > 0 THEN 1
WHEN sum(cantidad) <= 0 THEN 0
END) AS suma FROM volcado GROUP BY reserva)a
這應該工作,將子查詢用作表而不是列。
SELECT SUM(suma) from
(SELECT (CASE
WHEN sum(cantidad) > 0 THEN 1
WHEN sum(cantidad) <= 0 THEN 0
END) AS suma FROM volcado GROUP BY reserva)
您可以使用CTE:
;WITH cte AS
(SELECT CASE
WHEN sum(cantidad) > 0 THEN 1
WHEN sum(cantidad) <= 0 THEN 0
END suma
FROM volcado
GROUP BY reserva)
SELECT sum(suma)
FROM cte
您可以根據需要簡化查詢。 因此, having
使用case
,不如使用:
SELECT COUNT(*)
FROM (SELECT reserva
FROM volcado
GROUP BY reserva
HAVING SUM(cantidad) > 0
) r;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.