SqlCmd.Format("UPDATE %s SET rsv="
"(SELECT (CASE WHEN (max-min)<0.00001 THEN 1 ELSE (last*100-min*100)/(max-min) END) " //关键是这里,试了下还行,有什么问题没有?
"FROM %s WHERE ID=%u)"
"WHERE ID=%u",
TmpTblName,
TmpTblName,i,
i);

解决方案 »

  1.   

    SqlCmd.Format( "UPDATE   %s   SET   rsv= " 
    "(SELECT   (CASE   WHEN   (max-min) <0.00001   THEN   1   ELSE   (last*100-min*100)/(max-min)   END)   "  
     //关键是这里,试了下还行,有什么问题没有? 
    "FROM   %s   WHERE   ID=%u) " 
    "WHERE   ID=%u ", 
    TmpTblName, 
    TmpTblName,i, 
    i);有问题...
    (SELECT   (CASE   WHEN   (max-min) <0.00001   THEN   1   ELSE   (last*100-min*100)/(max-min)   END)   "  
    FROM   %s   WHERE   ID=%u)这个是个集合..而你只能所要的是直!!
    加上一个TOP 1应该可以了~~
      

  2.   

    update i
    set rsv=(select top 1 (case when (max-min)<0.00001 then 1 else (last*100-min*100)/(max-min)   END from TmpTblName where ID=i.ID)
    from TmpTblName i
    where ID ='U'
      

  3.   

    ID是主键,TOP 1可以不要?