比如,3个字段
编码 当前金额 余额
A1, 100, 400
A1, 200, 400
A2, 300, 500
A2, 300, 500
它们是一个集合比如说,编码为A1,的余额是400,本集合,A1的和加起来小于400,返回TURE,大于400返回FALSE       编码为A2的也是一样。
   
        大家有什么好方法可以帮我解决,在线等,急!        

解决方案 »

  1.   

    A1的和加起来小于400,A1的和是指A1对应的当前金额的和?
      

  2.   


    select 编码,count(当前金额),max(余额) from 表 group by 编码
      

  3.   

    写一个类A,有三个字段,就是“编码 当前金额 余额”。
    这个集合就是 A的集合了。
    写一个方法bool fa(string type);
    调用时 : fa(A1);fa(A2);
    方法内 就是遍历集合的问题了,就不说了。
      

  4.   


    public bool Check()
    {
        using(SqlConnection con = new SqlConnection("连接字符串"))
        {
            conn.Open();
            SqlCommand cmd = new SqlCommand("select 编码,当前金额,余额 from yourtable where 编码=A1",conn);
            int left = 0, sum = 0;
            using(SqlDataReader dr = cmd.ExecuteReader())
            {
                 while(dr.Read())
                 {
                      left = Convert.ToInt32(dr["余额"]);
                      sum += Convert.ToInt32(dr["当前金额"]);
                 }
            }
            return sum < left;
        }
    }大概写了下,没测试
      

  5.   


    select 编码,sum(当前金额),max(余额),case  when sum(当前金额)<=max(余额) then 'TRUE' else 'false' end  from 表 group by 编码
    在SQL2005中测试,成功了。
    输出为:
    A1         300 400 TRUE
    A2         800 500 false
      

  6.   

    第一,不是SQL哈
    第二,A1,的余额都是400,
    但是,我开发票的时候,我可以第1次开,100,第2次开200
    同理,A2也是一样。
      

  7.   

    先,谢谢7楼的,大哥
    我这个东东,其实来实现一个,多开发票情况中,判断余额,这些数据,是分别取出来,放在一个集合,或,多维数组进行判断,所以,用SQL没用,如果实在,不性,建个临时表,用你那种方法,嘿嘿。
    我想用一个算法来实现它
      

  8.   

    select 编码,余额,sum(当前金额)as当前金额 from A case 当前金额<=余额 then ture else false group by 编码,余额 
      

  9.   

    写一个类A,有三个字段,就是“编码 当前金额 余额”。 
    这个集合就是 A的集合了。 
    写一个方法bool fa(string type); 
    调用时 : fa(A1);fa(A2); 
    方法内 就是遍历集合的问题了,就不说了。
      

  10.   

    关键问题在于1。 A1, 100, 400 
    2。 A1, 200, 400 
    3。 A2, 300, 500 
    4。 A2, 300, 500 我第一条记录,它是100<400,和它相同的第2条记录的余额相加,100+200<400但是3和4条记录,A2,300+300>500这样说吧,只要有大余,余额的就返回FALSE,这样感觉要简单点?大家帮帮忙,郁闷死了
      

  11.   

    用两个哈西表,做一个循环,
    第一个哈西表 Key :A1,A2,...,  Value: 400,500...
    第二个哈西表 Key :A1,A2,...,  Value:100+200,300,300(这里需要循环处理)这样做一个函数,把key 传进来,比较两个哈西表的值就行了。
      

  12.   

    能不能说下你存那些数据所用的具体数据结构?用ojlovecd写的那段代码按照你的数据结构改动一下应该就可以了的
      

  13.   

    select 编码,Sum(当前金额) as '当前金额',sum(余额) as '余额' from yourtable where 编码=A1
      

  14.   

    唉,明白了。你可以这样,这个算法只要实现不复杂,不过要实现得好还是要根据你的具体业务情况来处理一下。
    比如我这个实现比较适用于只查询某一个 account是否还可以开票,但如果要做一个总体开票情况分析有很多条记录的,我觉得还是用SQL方便。public class Invoice
    {
        public string Code{get;set;}
        public int Value{get;set;}
        public int Total{get;set;}    public Invoice(string c,int v,int t){Code = c;Value =v;Total = t;}
    }public bool Foo(List<Invoice> invoices,string name)
    {
        int values=0;
        int maxtotal=0;
        foreach(Invoice i in invoices)
        {
           if(i.Code == name)
           {
               values +=i.Value;
               if(i.Total>maxtotal)maxtotal = i.Total;
           }
        }
       return values<=maxtotal;
    }
      

  15.   

    对了,前面你要把你所有的开票记录都添加到 invoices列表中。
      

  16.   

    对了,用LINQ上述代码会更简单。不知道你有没有VS2008,我就不写了。