日期:2014-05-17  浏览次数:20420 次

求一条平分件数的SQL
declare @t table(id int,p int,g numeric(18,2),m numeric(18,2))
insert into @t(id,p,g,m)
select 1001,3,40.00,4.0 union all
select 1002,30,900.00,75.00 union all
select 1003,10,800.00,70.00

平分条件只有一个值 ,比如我输入: 2 想得到如下数据:

/*
groupName   id          p           g           m
----------- ----------- ----------- ----------- -----------
1           1001        3           40          4
1           1002        18          540         45
2           1002        12          360         30
2           1003        10          800         70
*/


如果输入3应该会分成3份。

------解决方案--------------------
真的,没看很明白.要求达到什么效果
------解决方案--------------------
的确描述的不清楚
输入个2 是想分第二条记录? 按什么规则分? 你一楼的表述看数据应该是分成5份,按3:2的比例分配,按id排序。后面的回复那个看起来是按7:3的比例分配,但是排序规则又按什么?
------解决方案--------------------
你敢把需求说的更不明白点么?

既然来提问了,就把问题说的清楚明了些。

这样让别人猜你的意图,浪费时间,浪费精力,你说呢?
------解决方案--------------------
经过我的深思熟虑,其实你的意思。。。真不明白什么意思。嘿
------解决方案--------------------
按ID顺序切分?
------解决方案--------------------
硬是没看懂是怎么分的?
------解决方案--------------------
DECLARE @t TABLE
        (
         id INT ,
         p INT ,
         g NUMERIC(18 , 2) ,
         m NUMERIC(18 , 2)
        )
INSERT  INTO @t (id , p , g , m)
        SELECT  1001 , 3 , 40.00 , 4.0
        UNION ALL
        SELECT  1002 , 30 , 900.00 , 75.00
        UNION ALL
        SELECT  1003 , 10 ,&