表:table
id  name   sign1  sign2  userid  money   result
1   橘子  0.5 0      1       100  
2 苹果   4.8   0.5    2        50
3 橘子     0.5   0      3       150
4 橘子    0    0.5      4     100是这样.sign=0.5的有两个,sign2两0.5的有一个.我想把sign=0.5的钱平均分配给sign2=0.5的用户.然后在result显示.

解决方案 »

  1.   

    表:table
    id  name   sign1  sign2  userid  money   result
    1   橘子  0.5 0      1       100  
    2 苹果   4.8   0.5    2        50
    3 橘子     0.5   0      3       150
    4 橘子    0    0.5      4     100是这样.sign1=0.5的有两个,sign2两0.5的有两个.我想把sign1=0.5的钱平均分配给sign2=0.5的用户.然后在result显示.
      

  2.   

    --这样?update 表名 set 
        result =
                (select sum([money]) from 表名 where sign1=0.5)/(select count(*) from 表名 where sign2=0.5)
    where sign2=0.5
      

  3.   

    update 表名 set 
        result =
                [money] + (select sum([money]) from 表名 where sign1=0.5)/(select count(*) from 表名 where sign2=0.5)
    where sign2=0.5
      

  4.   

    是不是這個意思?
    update table set result = (select sum(money) from table where sign1 = 0.5)/ (select count(money) from table where sign2 = 0.5) where sign2 = 0.5
    select name   sign1  sign2  userid  money   result  from table
      

  5.   

    谢谢两位的回答.二位的思路正确.可能我的算法没说明白.
    假如sign1=0.5的钱(money字段)按照sign2=0.5所显示的钱多少分配.
    例如sign1=0.5的钱一共是150,sign2=0.5的钱200,就是说sign2=0.5 中的钱谁交的多 谁就分的多.
    前提是不知道表中的sign1和sign2的确定数据.
    麻烦大家了,本人的sql  实在是烂.
      

  6.   

    update 表名 set 
        result =
                (select sum([money]) from 表名 where sign1=0.5)
                /
                (select sum([money]) from 表名 where sign2=0.5)
                *
                [money]
    where sign2=0.5
      

  7.   

    楼上的 谢谢啊.
    我就厚着脸皮问到底吧,如果sign1=0.5和sign2=0.5没有明确给出,上面这句怎么写.
    是不是还要嵌套sql.例如 where sign1=sign2.
      

  8.   

    是动态给出,还是不给出?如果动态给出,就用动态SQL语句或在前台生成SQL语句执行。如果不给出,你的计算规则需要再讲清楚
      

  9.   

    哦 是这样.
    update 表名 set 
        result =
                (select sum([money]) from 表名 where sign1=0.5)
                /
                (select sum([money]) from 表名 where sign2=0.5)
                *
                [money]
    where sign2=0.5  这里的 sign1=0.5 或者sign2=0.5,这些数据存在于数据库中,因为会有好多sign1字段=sign2字段的数据,我计算的时候不可能明确写出where sign1=XX,where sign2=XX.就是找出sign1=sign2的数据 然后计算
      

  10.   

    declare @number int 
    set @number1=0.5
    set @number2=0.5
    update 表名 set 
        result = (select sum([money]) from table where sign1=@number1)
                  /
                (select count(*) from table where sign2=@number2)
                         where sign2=@number2
    只要更改 @number1=0.5
     @number2=0.5
    中0.5就可以了,呵呵用局部变量搞!!
      

  11.   

    多谢谢了个哥几个.
      如果是这样,这条sql如何写.
    就是把sign1=0.5的钱 全部给了sign2=0.5的,那sign1=0.5 所对应的result置为0.