SQL Sum a Sum或combine

时间:2017-10-11 10:03:54

标签: sql

我需要以下查询的帮助,它应该产生每场比赛中所有目标的总和:

SELECT SUM(stand1)
    FROM wedstrijdmodule_wedstrijden 
    WHERE team1 = 25 
UNION
SELECT SUM(stand2)
    FROM wedstrijdmodule_wedstrijden 
    WHERE team2 = 25;

导致:

SUM(stand1)
68
77

我需要:

SUM(stand1)
145

自从我做了SQL并且搜索了大约一个小时后,已经有一段时间没有结果了。它不需要看起来很好,因为它将使用php提取。

1 个答案:

答案 0 :(得分:2)

简单的回答,将您的查询包装在派生表中并执行另一个SUM:

select sum(sm)
from
(
    SELECT SUM(stand1) as sm
        FROM wedstrijdmodule_wedstrijden 
        WHERE team1 = 25 
    UNION ALL
    SELECT SUM(stand2)
        FROM wedstrijdmodule_wedstrijden 
        WHERE team2 = 25
) dt

切换到UNION ALL,以防两个选择返回相同的数字。

或者,使用case表达式进行条件聚合:

SELECT SUM(case when team1 = 25 then stand1 else 0 end) + 
       SUM(case when team2 = 25 then stand2 else 0 end) 
FROM wedstrijdmodule_wedstrijden 
WHERE team1 = 25 or team2 = 25