Oracle场景

时间:2015-07-17 01:46:47

标签: sql oracle

请帮我解决以下情况: I / P

Name salary
Ram 200
Shyam 900
Rabi 700
Ram 600
Rabi 100
Shyam 300

O / P

Name. Salary
Ram 200
Ram 800
Shyam 900
Shyam 1200
Rabi 700
Rabi 800

如何使用oracle sql查询执行此操作?

2 个答案:

答案 0 :(得分:1)

您似乎想要累积总和:

select name, sum(salary) over (partition by name order by id) as cumesalary
from table t
order by name;

order by并不完全是你的输出。如果订购很重要,请更加明确订购规则。

此外,这假设您有某种id或创建日期来指定表的顺序。 SQL表表示无序集,因此没有固有的排序。您需要一列来指定排序。

答案 1 :(得分:1)

我认为您会发现这完全符合您的要求。我保证了出色的表现。 ;)

select 'Ram' as "Name.", 200 as "Salary" from dual
union all
select 'Ram', 800 from dual
union all
select 'Shyam', 900 from dual
union all
select 'Shyam', 1200 from dual
union all
select 'Rabi', 700 from dual
union all
select 'Rabi', 800 from dual

SQL Fiddle Demo