主从表主表字段  帐单编号 审核状态
从表字段  帐单编号 应付金额 实际支付  
审核一个帐单,判断从表的应付金额是否大于或等于应付金额,如成立,审核状态改为以审核通过。如有小于的,不通过。关键是从表可能有多条记录,怎么循环去判断?
请教,谢谢!

解决方案 »

  1.   

    select a.*, status = case when b.应付金额>=a.应付金额 then '通过' else '不通过' end
    from 主表 a
    join (select 帐单编号, 应付金额=sum(应付金额)
      from 从表 group by 帐单编号) as b on a.帐单编号=b.帐单编号
      

  2.   

    只要有一条记录小于就不能通过审核:select a.*
        ,status = case when exists (select 1 from 从表 b where a.帐单编号=b.帐单编号 and b.应付金额>=a.应付金额
            ) then '通过' else '不通过' end 
    from 主表 
      

  3.   

    sorry, 上面的逻辑错了
    select a.*  
      ,status = case when exists (
           select 1 
           from 从表 b 
           where a.帐单编号=b.帐单编号 
           and b.应付金额<a.应付金额 ) then '不通过' else '通过' end 
    from 主表 
      

  4.   

       update a set 审核状态=1 from 主表字段 a
    where  exists(select 1 from 从表字段 b
    where   a.帐单编号=b.帐单编号 and 应付金额>= 实际支付)