2012-07-13 3 views
1

가정하자 나는 아래 테이블에 있습니다합산 결과 세트는

Class Student Maths English 
------------------------------------ 
1  a  50  60 
1  b  -  60 
2  c  70  50 
2  d  40  - 

을 그리고 나는이 결과 집합을 생산하기 위해 SQL 쿼리가 필요합니다 도와주세요

Score  Maths English Total 
-------------------------------------- 
1    50  120  170 
2    110  50  160 
Grand Total 160  170 330 

합니다.

답변

1

이 시도 :

이 T-SQL 구문입니다
SELECT 
    ISNULL(Class, 'Grand Total') as Score, 
    sum(Maths) as Maths, 
    sum(English) as English, 
    sum(Maths) + sum(English) as Total 
FROM 
    table 
GROUP BY 
    ISNULL(Class, 'Grand Total') 
WITH ROLLUP 

주, 그것은 MySQL의 또는 Oracle에 대한 약간의 조정이 필요할 수 있습니다.

+0

총계를 얻으려면 롤업이 필요합니다 – Madhivanan

+0

감사합니다. cjk. 나는 T-SQL 문법이 필요하며 이것은 완벽하다. –

3
SELECT 
    Class, 
    sum(Maths) as Maths, 
    sum(English) as English, 
     sum(Maths+English) as Total 
FROM 
    table 
Group by 
    Class with Rollup 
+0

감사 Madhivanan –

+0

한 롤업 본 적이 전에 - 좋아! – whytheq

2

sql fiddle

내가 그렇게 우아한 보이지 않는 노동 조합을 사용했습니다

create table the_table 
(
    class int, 
    student varchar(5), 
    maths int, 
    english int, 
) 
insert into the_table 
values 
(1, 'a', 50, 60), 
(1, 'b', 0, 60), 
(2, 'c', 70, 50), 
(2, 'd', 40, 0) 

select 
    [class] = convert(varchar(50),class) 
    , sum(maths) maths 
    , sum(english) english 
    , sum(maths + english) total 
from the_table 
group by 
    class 
union 
select 
    [class] = 'Grand Total' 
    , sum(maths) maths 
    , sum(english) english 
    , sum(maths + english) total 
from the_table