比如我的表有这么几条记录:
名称 金额
a 1
a 11
a 8 我要求把相同名称的金额之和不超过10的明细合并在一起,结果就是:
a 9
a 11(第一条明细和第二条明细金额之和为12,超过10了所以不合并,但和第三条没超过10所以合并在一起了)用group by能实现吗?
名称 金额
a 1
a 11
a 8 我要求把相同名称的金额之和不超过10的明细合并在一起,结果就是:
a 9
a 11(第一条明细和第二条明细金额之和为12,超过10了所以不合并,但和第三条没超过10所以合并在一起了)用group by能实现吗?
(
select 'a', 1 union all
select 'a', 11 union all
select 'a' , 8
)
, tb2 as
(
select *, case when 金额 < 10 then 0 else 1 end as z from tb
)
select 名称, SUM(金额) from tb2
group by 名称,z
a 2
a 3
a 4
a 7
a 11
a 5
a 6
如果是这样结果是什么呢?
结果是:
a 6(由前三条明细合并而来)
a 9
a 11
a 6
select 'a' as mc, 1 as je union select 'a',8 union select 'a',11)t
group by mc,LEN(je)
/*
mc 位 总额
a 1 9
a 2 11
*/
a 6(由前三条明细合并而来)
a 9
a 7
a 11
a 6