如何基于同一表上的不同条件使用分组和汇总相同数据

时间:2019-02-02 14:49:00

标签: sql

我正在尝试对表中的数据求和。

我表中的数据

Month   Osl         Sale
10      8-02-01-01  38440.5
10      8-02-01-03  14961
10      8-03-02-01  10388.3
10      8-05-04-01  81666.6
10      8-05-04-05  29431.8
10      8-07-01-09  9821.4
10      8-09-01-01  7567.5

我的预期输出是:

2 个答案:

答案 0 :(得分:1)

我认为union all是最简单的方法:

select month, osl, sale
from t
union all
select month, left(osl, 7), sum(sale)
from t
group by month, left(osl, 7);

并非所有数据库都支持left()。在没有的情况下,substr()substring()可以提取前七个字符。

答案 1 :(得分:1)

不确定您的RDMS,但我建议采取以下措施:

select * from table1
union all
select t.month, left(t.osl, len(t.osl)-3), sum(t.sale)
from table1 t
group by t.month, left(t.osl, len(t.osl)-3)

table1更改为您的表名。