|
|
Question : Roll Up/ Cube in Oracle 10g
|
|
I'm using Oracle 10g as my database.
Suppose I have a table that has data:
ID SEMESTER SUBJECT MARKS
9 4 Maths 50 9 4 Science 45 9 4 English 42 10 5 Maths 56 10 5 History 23
To now the output should look like this
ID SEMESTER SUBJECT MARKS 9 4 Maths 50 Science 45 English 42 Total 137 10 5 Maths 56 History 23 Total 79
I think I could possible achieve this with cube or roll up Can anybody of you please suggest me a possible query that would help me achieve this feat
|
Answer : Roll Up/ Cube in Oracle 10g
|
|
This should do:
select case when rn = 1 then id else null end id, case when rn = 1 then semester else null end semester, subject, marks from ( select row_number() over(partition by id, semester order by id, semester) rn, case when grouping_id(id, semester, subject) <> 0 then null else id end id , case when grouping_id(id, semester, subject) <> 0 then null else semester end semester , case when grouping_id(id, semester, subject) = 1 then 'Total' else subject end subject, sum(marks) marks from a1 group by grouping sets ((id, semester, subject), (id, semester)) ) /
|
|
|
|
|