我正在尝试对表中的数据求和。
我表中的数据
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
我的预期输出是:
答案 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
更改为您的表名。