我现在有份数据如下:
类别     货号       金额       
布类     1112       100
布类     1142       234
布类     3112       453
布类     1314       20
布类     1315       245
合金     2112       120
合金     2122       340
合金     2132       100
合金     2142       1340
合金     2152       10
合金     2162       1040
合金     2172       232
合金     2182       1300
银饰     3345       3239
银饰     3445       322
银饰     3545       324
银饰     3645       222239
银饰     3745       139
银饰     3845       333
银饰     3945       323
现在我想要将上面的数据分成两份,即每份都有各种类别,一份金额占60%左右,一份金额占40%左右。有什么好方法解决?!

解决方案 »

  1.   

    select TOP 60 PERCENT from table
    select top 40 percent from table
    不知道可以不?
      

  2.   

    insert 表1 select 类别,货号,金额*60% from 表
    insert 表2 select 类别,货号,金额*40% from 表
      

  3.   

    gahade(东北爷们) :
    你的那句只是将所有的进行处理,并没有对每一类别进行处理,我要求是个类别要取后,合成后又大概成60%或40%ppact(天下有雪): 
    你的是将一个商品分两份,而我要的是商品在第一份中就不能在第二份中,反之一样。
      

  4.   

    我想很复杂,价格的和在60%的排列组合是什多的,到一要哪一组。想得头都大拉。关注ing
      

  5.   

    -- 示例数据
    DECLARE @t TABLE(类别 varchar(10), 货号 int, 金额 int)
    INSERT @t SELECT '布类', 1112, 100
    UNION ALL SELECT '布类', 1142, 234
    UNION ALL SELECT '布类', 3112, 453
    UNION ALL SELECT '布类', 1314, 20
    UNION ALL SELECT '布类', 1315, 245
    UNION ALL SELECT '合金', 2112, 120
    UNION ALL SELECT '合金', 2122, 340
    UNION ALL SELECT '合金', 2132, 100
    UNION ALL SELECT '合金', 2142, 1340
    UNION ALL SELECT '合金', 2152, 10
    UNION ALL SELECT '合金', 2162, 1040
    UNION ALL SELECT '合金', 2172, 232
    UNION ALL SELECT '合金', 2182, 1300
    UNION ALL SELECT '银饰', 3345, 3239
    UNION ALL SELECT '银饰', 3445, 322
    UNION ALL SELECT '银饰', 3545, 324
    UNION ALL SELECT '银饰', 3645, 222239
    UNION ALL SELECT '银饰', 3745, 139
    UNION ALL SELECT '银饰', 3845, 333
    UNION ALL SELECT '银饰', 3945, 323-- 40%
    SELECT A.*
    FROM @t A
    INNER JOIN(
    SELECT 类别, 金额 = SUM(金额) * .4
    FROM @t
    GROUP BY 类别
    )B 
    ON A.类别 = B.类别
    AND B.金额 >= (
    SELECT SUM(金额) FROM @t 
    WHERE 类别 = A.类别 
    AND (金额 < A.金额 OR 金额 = A.金额 AND 货号 <= A.货号))-- 60%
    SELECT A.*
    FROM @t A
    INNER JOIN(
    SELECT 类别, 金额 = SUM(金额) * .4
    FROM @t
    GROUP BY 类别
    )B 
    ON A.类别 = B.类别
    AND B.金额 < (
    SELECT SUM(金额) FROM @t 
    WHERE 类别 = A.类别 
    AND (金额 < A.金额 OR 金额 = A.金额 AND 货号 <= A.货号))
      

  6.   


    create table allsum(id int identity(1,1),类别 varchar(10),     货号 varchar(10),       金额 int )insert into allsum(类别,货号,金额)
    select '布类'     ,1112 ,      100 union all
    select'布类'    ,1142   ,    234 union all
    select'布类'  , 3112  ,     453 union all
    select'布类'    , 1314 ,      20 union all
    select'布类'     ,1315  ,     245 union all
    select'合金'    , 2112  ,     120 union all
    select'合金'    , 2122  ,     340 union all
    select'合金'    , 2132 ,      100 union all
    select'合金'    , 2142  ,     1340 union all
    select'合金'    , 2152 ,      10 union all
    select'合金'    , 2162 ,      1040 union all
    select'合金'    , 2172 ,      232 union all
    select'合金'    , 2182  ,     1300 union all
    select'银饰'   ,  3345  ,     3239 union all
    select'银饰'    , 3445  ,     322 union all
    select'银饰'   ,  3545,       324 union all
    select'银饰'    , 3645 ,      222239 union all
    select'银饰'    , 3745,       139 union all
    select'银饰'   ,  3845  ,     333 union all
    select'银饰'    , 3945 ,      323select * from allsum 
     
    --60%
    select 类别,货号 into #temp6  from(
    select 类别,货号,id,
    convert(decimal (3,1),
    (select count(1) from allsum a where a.id<=allsum.id and a.类别=allsum.类别   ))
    /
    convert(decimal(3,1),(select count(1) from allsum c where c.类别=allsum.类别))
      as bb
     from allsum 
    )a where bb <=0.6--40%--drop table allsum,#temp1,#temp2
      

  7.   


    create table allsum(id int identity(1,1),类别 varchar(10),     货号 varchar(10),       金额 int )insert into allsum(类别,货号,金额)
    select '布类'     ,1112 ,      100 union all
    select'布类'    ,1142   ,    234 union all
    select'布类'  , 3112  ,     453 union all
    select'布类'    , 1314 ,      20 union all
    select'布类'     ,1315  ,     245 union all
    select'合金'    , 2112  ,     120 union all
    select'合金'    , 2122  ,     340 union all
    select'合金'    , 2132 ,      100 union all
    select'合金'    , 2142  ,     1340 union all
    select'合金'    , 2152 ,      10 union all
    select'合金'    , 2162 ,      1040 union all
    select'合金'    , 2172 ,      232 union all
    select'合金'    , 2182  ,     1300 union all
    select'银饰'   ,  3345  ,     3239 union all
    select'银饰'    , 3445  ,     322 union all
    select'银饰'   ,  3545,       324 union all
    select'银饰'    , 3645 ,      222239 union all
    select'银饰'    , 3745,       139 union all
    select'银饰'   ,  3845  ,     333 union all
    select'银饰'    , 3945 ,      323select * from allsum 
     
    --60%
    select 类别,货号 ,金额 into #temp1  from(
    select 类别,货号,金额,id,
    convert(decimal (3,1),
    (select count(1) from allsum a where a.id<=allsum.id and a.类别=allsum.类别   ))
    /
    convert(decimal(3,1),(select count(1) from allsum c where c.类别=allsum.类别))
      as bb
     from allsum 
    )a where bb <=0.6
    --40%select * from #temp1
    --drop table allsum,#temp1,#temp2
    老大写的比较好,自己虽然不行,但也想拿出来让大家一笑吧。哈哈