2013-04-25 4 views
2

Возможно ли добавитьрезультат двух Сумма() функции?Как добавить результат из двух сумм?

Таблица:

DROP TABLE MATCH; 
    CREATE TABLE MATCH 
    (M_ID VARCHAR2 (4) NOT NULL, 
    HT_ID VARCHAR2 (4), 
    AT_ID VARCHAR2 (4), 
    P_F NUMBER (3), 
    P_A NUMBER (3)); 

    INSERT INTO MATCH VALUES 
    ('M01','T1', 'T2', 2, 0); 

    INSERT INTO MATCH VALUES 
    ('M02','T1', 'T2', 1, 1); 

    INSERT INTO MATCH VALUES 
    ('M03','T1', 'T2', 0, 2); 

    INSERT INTO MATCH VALUES 
    ('M04','T1', 'T2', 0, 2); 

    INSERT INTO MATCH VALUES 
    ('M05','T2', 'T1', 2, 0); 

    INSERT INTO MATCH VALUES 
    ('M06','T2', 'T1', 0, 2); 

    INSERT INTO MATCH VALUES 
    ('M07','T2', 'T1', 1, 2); 

    INSERT INTO MATCH VALUES 
    ('M08','T2', 'T1', 0, 2); 

То, что я пытаюсь получить это точки (точки на (P_F) и пункта против (P_A)) из домашней команды "T1".

Чтобы сделать его несколько более ясным, я делаю следующее, из которого получается .

select sum(P_F) 
from match 
where HT_ID='T1'; 

select sum(P_A) 
from match 
where AT_ID='T1'; 

Я попытался следующие, но это добавляет обе колонки для этой конкретной команды, в результате 17:

select sum(P_F+P_A) 
from match 
where ht_id='T1' or at_id='T1'; 

Как я мог добавить в два сумм в одном запросе? Заранее спасибо.

+0

Что СУБД вы используете? – Kermit

ответ

4
select 
sum(case when HT='T1' then P_F else 0 end), 
sum(case when AT='T1' then P_A else 0 end) 
from match 

добавить:

select 
sum(case when HT='T1' then P_F else 0 end) + 
sum(case when AT='T1' then P_A else 0 end) 
from match 
+0

Отлично, спасибо мистеру Е! – Ryoss

2

Вы можете использовать СЛУЧАЙ внутри сумму:

SELECT SUM(CASE WHEN ht_ID = 'T1' THEN P_F ELSE 0 END + CASE WHEN AT_ID = 'T1' THEN P_A ELSE 0 END) 
FROM Match 
WHERE ht_id='T1' 
OR  at_id='T1'; 

Example on SQL Fiddle

Смежные вопросы