Reputation: 129
Table 'volcado': id, reserva, cantidad
With the following query:
SELECT (CASE
WHEN sum(cantidad) > 0 THEN 1
WHEN sum(cantidad) <= 0 THEN 0
END) AS suma
FROM volcado
GROUP BY reserva
The result is:
╔══════╗
║ suma ║
╠══════╣
║ 1 ║
║ 1 ║
║ 0 ║
║ 1 ║
║ 0 ║
╚══════╝
I need the result of the query would be: 3
How can I SUM() the rows of 'suma' on the same query?
I don't get it run with:
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
Error:
Subquery returns more than 1 row
Thanks in advance.
Upvotes: 1
Views: 1480
Reputation: 1269503
You can simplify the query, if you like. So, instead of using case
use having
:
SELECT COUNT(*)
FROM (SELECT reserva
FROM volcado
GROUP BY reserva
HAVING SUM(cantidad) > 0
) r;
Upvotes: 0
Reputation: 93
You can use 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
Upvotes: 0
Reputation: 852
This should work, use the subquery as a table instead of as a column.
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)
Upvotes: 1
Reputation: 4844
Try this way
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
Upvotes: 3