主要按条件取 @r_icnum   = sum(ic_num),
              @r_icmoney = sum(ic_money),
              @r_cardnum = sum(card_num),
             @r_moneynum= sum(money_num)
这几个值传到报表中去!

解决方案 »

  1.   

    --只要一个临时表就能代替两个嵌套游标得到所有需要插入的行。然后再把
    --uv_linecent,uv_line,ictype_dict,department_dict这几个表与#sum表
    --就能得到所有需要插入icconsumeline_temp表的字段啦
    select line_id,
           r_icnum   = isnull(sum(ic_num),0),
           r_icmoney = isnull(sum(ic_money),0),
           r_cardnum = isnull(sum(card_num),0),
           r_moneynum= isnull(sum(money_num,0)
    into #sum
    from   bustwice_dict
    where  ic_id < 32
           and  convert(char(10),use_date,112)>=convert(char(10),@begin_date,112)
           and  convert(char(10),use_date,112)<=convert(char(10),@end_date,112) 
    --     and  line_id = @r_lineid
    --     and  linecent_id = @r_linecentid --需要起点终点,必须有线路分号
           and convert(char(20),line_id)+convert(char(20),linecent_id) in
                                        (select distinct convert(char(20),line_id)
                                                         +convert(char(20),linecent_id)
                                         from uv_linecent)
    group by line_id
    having isnull(sum(ic_num),0) > 0 and isnull(sum(ic_money),0) >= 0
      

  2.   

    --只要一个临时表就能代替两个嵌套游标得到所有需要插入的行。然后再把
    --uv_linecent,uv_line,ictype_dict,department_dict这几个表与#sum表
    --就能得到所有需要插入icconsumeline_temp表的字段啦
    select line_id,
           r_icnum   = isnull(sum(ic_num),0),
           r_icmoney = isnull(sum(ic_money),0),
           r_cardnum = isnull(sum(card_num),0),
           r_moneynum= isnull(sum(money_num),0)
    into #sum
    from   bustwice_dict
    where  ic_id < 32
           and  convert(char(10),use_date,112)>=convert(char(10),@begin_date,112)
           and  convert(char(10),use_date,112)<=convert(char(10),@end_date,112) 
    --     and  line_id = @r_lineid
    --     and  linecent_id = @r_linecentid --需要起点终点,必须有线路分号
           and convert(char(20),line_id)+convert(char(20),linecent_id) in
                                        (select distinct convert(char(20),line_id)
                                                  +convert(char(20),linecent_id)
                                         from uv_linecent)
    group by line_id
    having isnull(sum(ic_num),0) > 0 and isnull(sum(ic_money),0) >= 0
      

  3.   

    使用临时表在网络连机访问时或多任务时容易出现错误?
    应该不会吧。你可能是指##table那种形式。
    当然,用Yang_(扬帆破浪) 的方法也很好:
    declare @table(line_id int,......)
    insert into @table
    select ......