sql server 想对信息进行分组 每组最多50个 多出的部分需要增加一行
表结构如下
规格(ItmSpec) 数量(Qty)
Spec1 69
Spec2 148
Spec3 98
想要变成
规格(ItmSpec) 数量(Qty)
Spec1 50
Spec1 19
Spec2 50
Spec2 50
Spec2 48
Spec3 50
Spec3 48
一个简单的with递归就行了
create table test_t (ItmSpec varchar(10),Qty int);
insert into test_t values ('Spec1', 69);
insert into test_t values ('Spec2', 148);
insert into test_t values ('Spec3', 98);
with t as (
select ItmSpec,case when Qty>=50 then 50 else Qty end q, Qty from test_t
union all
select ItmSpec,case when Qty-q>=50 then 50 else Qty-q end ,Qty-q from t where Qty-q>0)
select ItmSpec,q from t order by 1,2 desc;
这种最好放到后台去处理
有数据表?只看文字想出来了,结果也有可能不正确