现在有一张表有以下几个字段  A B C D E F G H I J K现在要编写一个存储过程来 update J字段
其条件如下,
if K=0  then J=G*I
else 
    if  max(G,H)*I-F<0  then J=f
     else J=max(G,H)*I 请问一下这样的一个存储过程怎样写呢??  

解决方案 »

  1.   

    update 一张表
    set J= case 
    when K=0 then G*I 
    when (case when G>H then G else H end) * I-F<0 then F
    else (case when G>H then G else H end) * I
    end
      

  2.   

    CREATE PROC P
    AS 
      IF K>0
          UPDATE TB SET J=G*I WHERE K>0
      ELSE
        BEGIN          IF G>H AND G*I<F
              BEGIN
               UPDATE TB SET J=F WHERE G>H AND  G*I<F
              END
              IF G<H AND H*I<F
              BEGIN
              UPDATE TB SET J=F WHERE G<H AND H*I<F
              END
              ELSE          
              BEGIN
                 DECLARE @TMP INT
                 SET @TMP=CASE WHEN G>H THEN G ELSE H END
                 UPDATE TB SET J=@TMP *I WHERE @TMP *I>F
             END
         END