d7+access下一表:表名:进度结构如下:单位    计划    本月  累计  进度  位次
---------------------------------------
单位1   2000     20   400    25%     3    
单位2   1000     10   150    15%     5
单位3   5000    500  3000    60%     1
单位4   4000    100  2000    50%     2
单位5   5000    800  2500    50%     2求以下两SQL语句:
1、进度=累计%计划*100的正确写法?!
SQL.Add('Update 进度 set 进度=累计/计划*100 where 计划>0');语句得出来的是0或者1。2、在不打乱原来纪录顺序的前提下,如何实现位次自动排名?!同时考虑位次并列的情况!在线等,急用!
万分感谢!

解决方案 »

  1.   

    SQL.Add('Update 进度 set 进度=convert(char(10),cast(累计 as float)/计划*100)+'%' where 计划>0');?
      

  2.   

    SQL.Add('Update 进度 set 进度=convert(float,1000)/convert(float,2000)*100+'%' where 计划>0');
      

  3.   

    你的数据库设计有问题:
    1.进度不应为数字型。应为小数型。因为他是个百分比.convert(float,1000)/convert(float,2000)*100
    这个强制转换中的1000你用一个变量定义,用select给他取出来,放进去。
    convert是sql内置函数,错误就是中间的数字,10000,2000,报的错。
      

  4.   

    Update 进度 set 进度=累计*100/计划 where 计划>0
      

  5.   

    SQL.Add('Update 进度 set 进度1=cstr(累计1/计划1*100) & "%" where 计划1>0');
    提示无效索引!应该怎么写?!
      

  6.   

    第一个问题自己解决!
    定义 字段 进度 为 double型
    语句如下:
    SQL.Add('Update 进度 set 进度=round(累计*100/计划,2) where 计划>0');