楼主是不是要这样的功能
select sum(isnull(s.SignCount,TrainCount)) as Count   from TrainInfo T left join SignInfo S
on T.TrainId=S.TrainId

解决方案 »

  1.   

    谢谢楼上哥们回答,如果用户在未报名前,看到的数据是TrainCount,那么报名后可能出现报名人数少于TrainCount的情况,怎么能每次都在TrainCount基数上增加报名人数,谢谢
      

  2.   

    select SumCount = case  when sum(signcount) is null then sum(traincount)
    else sum(traincount) + sum(signcount) 
      end
    from TrainInfo left join SignInfo on TrainInfo.TrainId=SignInfo.TrainId
      

  3.   

    select   SumCount   =   case     when   sum(signcount)   is   null   then   sum(traincount) 
    else   sum(traincount)   +   sum(signcount)   
        end 
    from   TrainInfo   left   join   SignInfo   on   TrainInfo.TrainId=SignInfo.TrainId
    如果有报名人数哪个基数重复计算了 比如有3个人对TrainId=1的主题报名(每个人填的人数是1)那么基数就重复算3次了
      

  4.   

    比如有3个人对TrainId=1的主题报名(每个人填的人数是1,主题基数是25)那么和是 25*3+3=78
    想要的结果是28,谢谢
      

  5.   

    select   SumCount   =   case     when   sum(signcount) is   null   then  max(traincount)
    else   max(traincount)   +   sum(signcount)  
    end
    from   TrainInfo
    left join SignInfo on TrainInfo.TrainId=SignInfo.TrainId
      

  6.   

    谢谢PING3000
    结果是正确的,但是执行效率感觉毕竟低,查询用时40秒了,不知道怎么会事情?
      

  7.   

    这种报名统计工作可以在用户报名的同时做,如在插入数据的同时更新TrainInfo中TrainCount字段的数据,
    可以写触发器或者添加update语句实现,这样就不会在取数据的时候每次进行统计