表A  a   b   c            表B  d   e   f   h
     1   10  null              1   k   kg  5
     2   20  null              2   k   k   6
     3   10  null              3   kg  k   7
关联条件 A.a=B.d
更新A表  条件:当e为kg时 c=b*h;当e不为kg,f为kg时 c=10;e和f都不为kg时  c=0
==========================================================================
理想结果  表A a  b   c
              1  10  10
              2  20  0
              3  10  70
急求SQL 语句 谢谢了

解决方案 »

  1.   

    UPDATE A SET C=CASE 
        WHEN E='kg' THEN B*H 
        WHEN E<>'kg' AND F='kg' THEN 10 
        WHEN E<>'kg' AND F<>'kg' THEN 0 END
    FROM A JOIN B ON A.A=B.D
      

  2.   

    update
       a
    set 
       c= case when e='kg' then b*h 
               when f='kg' then 10
               else 0
          end
    from 
       a,b
    where
       a.a=b.d
      

  3.   

    YiZhiNet(九斤半) 正解 又来晚了
      

  4.   

    多个sql,多次更新,语句比较简单
    如果用一个sql,则比较复杂,用update...select ...case..when...else...end
      

  5.   

    UPDATE A SET C=CASE 
        WHEN E='kg' THEN B*H 
        WHEN E<>'kg' AND F='kg' THEN 10 
        WHEN E<>'kg' AND F<>'kg' THEN 0 END
    FROM A JOIN B ON A.A=B.D
    YiZhiNet(九斤半) 正解 又来晚了