首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

把雷同名称的金额之和不超过10的明细合并在一起能用group by能实现不

2013-03-27 
把相同名称的金额之和不超过10的明细合并在一起能用group by能实现不?比如我的表有这么几条记录:名称金额a

把相同名称的金额之和不超过10的明细合并在一起能用group by能实现不?
比如我的表有这么几条记录:
名称  金额
a     1
a     11
a     8     

我要求把相同名称的金额之和不超过10的明细合并在一起,结果就是:
a     9
a     11

(第一条明细和第二条明细金额之和为12,超过10了所以不合并,但和第三条没超过10所以合并在一起了)

用group by能实现吗?
[解决办法]
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

[解决办法]

引用:
谢谢回复。但没满足我的要求啦,我不是要把金额小于10的合在一起,而是要金额之和小于10的才合在一起。比如,如果把第一条的金额改为3,那么三条都不要合并。

那就没办法用groupby来做了,只能用遍历查找计算了。
[解决办法]
a 1
a 2
a 3
a 4
a 7
a 11
a 5
a 6
如果是这样结果是什么呢?

[解决办法]
遍历,用临时表处理可能要方便一些的
[解决办法]
你干脆多分几个表吧,这么做只会越做越麻烦
[解决办法]
 
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位总额
a19
a211
*/

[解决办法]
引用:
引用:a 1
a 2
a 3
a 4
a 7
a 11
a 5
a 6
如果是这样结果是什么呢?

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


我考,后面还这么吭爹的条件
[解决办法]
好复杂呀,~~~~~~~
[解决办法]
引用:
引用:
a 1
a 2
a 3
a 4
a 7
a 11
a 5
a 6
如果是这样结果是什么呢?

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


合并的规则是什么?按顺序来 ?求的最大(小于11)?a 7 怎么处理的?
 

热点排行