SELECT SUM(NVL(Reading,Amount)) into nAmount 
    FROM  me,rd 
   WHERE me.METER_ID = 1111
     AND me.METER_NUMBER = rd.read_meter
     AND Read_Date <= inDate; me.METER_ID = 1111 对应的METER_NUMBER 在RD表里有多个Read_Date <= inDate 也有多个 形象的就是RD表   read_meter  Reading字段  Read_Date 
         1             2          20091012
         1             3          20091011
         1             4          20091010
         2             1          20091012
         2             5          20091011
         2             4          20091010 
                  。
                  。
                  。
上面的语句能不能求出在RD表里 我需要抽出的多个表在一个时间范围呢的总和呢?

解决方案 »

  1.   

    sum (ziduan)where Read_Date <= inDate  求一段时间里某张表的和现在我WHERE条件里是多张表 而不是一张 换句话说是求多张表在一段时间内的读书总合
      

  2.   

    是不是说你不止一个rd表,还有rd1,rd2...
    你想把这些表里满足条件的reading都加起来?
      

  3.   

    如果表不太多的话,也许可以这样
    select sum(n) into nAmount from
    (  SELECT SUM(NVL(Reading,Amount)) n
        FROM  me,rd 
      WHERE me.METER_ID = 1111 
        AND me.METER_NUMBER = rd.read_meter 
        AND Read_Date <= inDate
    union
    SELECT SUM(NVL(Reading,Amount)) n 
        FROM  me,rd1 
      WHERE me.METER_ID = 1111 
        AND me.METER_NUMBER = rd1.read_meter 
        AND Read_Date <= inDate
    ......) a 
      

  4.   

    楼上的 其实是这样的。me.METER_ID = 1111 ---〉多条  所以满足这个me.METER_NUMBER = rd.read_meter也有多条,Read_Date <= inDate ---〉一个表在这一段时间有多条读数
      

  5.   

     (不要高估你的汉语表达能力或者我的汉语理解能力)
       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  6.   

    你的那个语句修改下就可以了。
    SELECT SUM(NVL(rd.Reading,Amount)) into nAmount
        FROM  me,rd
      WHERE me.METER_ID = 1111 --这个条件(1)表示me表所有meter_id=1111的记录都取到
        AND me.METER_NUMBER = rd.read_meter --这个条件(2)表示连接me、rd两表,则所有rd里面read_meter与条件1中meter_id=1111的所有的meter_number(就是你说的多条,不错,会取到)相等的
        AND rd.Read_Date <= inDate; --这个条件是过滤(2)中取到的所有rd表的记录,得到时间小于这个参数的所有记录。答案出来了吧?
      

  7.   

      表述不太清楚...zeng fen