比如我的表有这么几条记录:
名称  金额
a     1
a     11
a     8     我要求把相同名称的金额之和不超过10的明细合并在一起,结果就是:
a     9
a     11(第一条明细和第二条明细金额之和为12,超过10了所以不合并,但和第三条没超过10所以合并在一起了)用group by能实现吗?

解决方案 »

  1.   

    with tb (名称,  金额) as
    (
    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
      

  2.   

    那就没办法用groupby来做了,只能用遍历查找计算了。
      

  3.   

    a 1
    a 2
    a 3
    a 4
    a 7
    a 11
    a 5
    a 6
    如果是这样结果是什么呢?
      

  4.   


    结果是:
    a 6(由前三条明细合并而来)
    a 9
    a 11
    a 6
      

  5.   

     select mc,LEN(je) as 位,SUM(je) as 总额 from (
    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
    */
      

  6.   

    按顺序来的。a 7  这一行保持不变。结果纠正一下:
    a 6(由前三条明细合并而来)
    a 9
    a 7
    a 11
    a 6