SELECT COUNT(t0.userid)
  FROM product t0, serv_st t2
 WHERE 1 = 1
   AND (t2.servid = t0.servid)
   AND T0.SDATE <= TO_DATE('2012-01-22', 'yyyy-mm-dd hh24:mi:ss')
   AND T0.SDATE >= TO_DATE('2011-02-08', 'yyyy-mm-dd hh24:mi:ss')
 ORDER BY T0.userid desc
 
 SELECT COUNT(t0.userid)
  FROM product t0, serv_st t2
 WHERE 1 = 1
   AND (t2.servid = t0.servid)
   AND T0.SDATE <= TO_DATE('2011-02-08', 'yyyy-mm-dd hh24:mi:ss')
   AND T0.SDATE >= TO_DATE('2011-01-22', 'yyyy-mm-dd hh24:mi:ss')
 ORDER BY T0.userid desc
 
 SELECT COUNT(t0.userid)
  FROM product t0, serv_st t2
 WHERE 1 = 1
   AND (t2.servid = t0.servid)
   AND T0.SDATE <= TO_DATE('2012-01-22', 'yyyy-mm-dd hh24:mi:ss')
   AND T0.SDATE >= TO_DATE('2011-01-22', 'yyyy-mm-dd hh24:mi:ss')
 ORDER BY T0.userid desc
第一个sql可以查询出1850条数据
第二个可以查询出2382条数据
第三个可以查询4202条数据
为什么第一个加第二个   != 第三个查出的数据呢?

解决方案 »

  1.   

     TO_DATE('2011-01-22', 'yyyy-mm-dd hh24:mi:ss')
    这个日期的数据,就是差异所在了。
    重复查询了2便,2条sql中都有它
      

  2.   

    我该如何避免这样的问题呢>?   因为客户提出的问题就是俩次加起来的数据和一次数据不同SELECT COUNT(t0.userid)
      FROM product t0, serv_st t2
     WHERE 1 = 1
       AND (t2.servid = t0.servid)
       AND T0.SDATE <= TO_DATE('2012-01-22', 'yyyy-mm-dd hh24:mi:ss')
       AND T0.SDATE >= TO_DATE('2011-02-09', 'yyyy-mm-dd hh24:mi:ss')
     ORDER BY T0.userid desc
     SELECT COUNT(t0.userid)
      FROM product t0, serv_st t2
     WHERE 1 = 1
       AND (t2.servid = t0.servid)
       AND T0.SDATE <= TO_DATE('2011-02-08', 'yyyy-mm-dd hh24:mi:ss')
       AND T0.SDATE >= TO_DATE('2011-01-22', 'yyyy-mm-dd hh24:mi:ss')
     ORDER BY T0.userid desc SELECT COUNT(t0.userid)
      FROM product t0, serv_st t2
     WHERE 1 = 1
       AND (t2.servid = t0.servid)
       AND T0.SDATE <= TO_DATE('2012-01-22', 'yyyy-mm-dd hh24:mi:ss')
       AND T0.SDATE >= TO_DATE('2011-01-22', 'yyyy-mm-dd hh24:mi:ss')
     ORDER BY T0.userid desc这样查询的结果是:
    2349+1850!=4202
      

  3.   

     SELECT COUNT(t0.userid)
      FROM product t0, serv_st t2
     WHERE 1 = 1
       AND (t2.servid = t0.servid)
       AND T0.SDATE <= TO_DATE('2011-01-22', 'yyyy-mm-dd hh24:mi:ss')
       AND T0.SDATE >= TO_DATE('2011-01-22', 'yyyy-mm-dd hh24:mi:ss')
     ORDER BY T0.userid desc
    这么查询竟然可以查询出数据     97条              求解释
      

  4.   

    实现的时候,例如客户查询2011-1-1到2011-1-2
    sql写成:>=2011-1-1  <2011-1-3
      

  5.   

    AND T0.SDATE <= TO_DATE('2011-02-08 12:00:00', 'yyyy-mm-dd hh24:mi:ss')
      AND T0.SDATE > TO_DATE('2011-01-22 12:00:00', 'yyyy-mm-dd hh24:mi:ss')
      

  6.   

    不需要看SQL,只要看时间范围就知道哪有问题了。
    楼主的问题,还是要考虑设计。
    需求是什么,SQL再改。