SELECT T1.*
  FROM (SELECT TO_CHAR(TO_DATE('2011-05-11 00:00:01',
                               'yyyy-mm-dd hh24:mi:ss') + (ROWNUM - 1) / 24,
                       'yyyy-mm-dd hh24') HH
          FROM DUAL
        CONNECT BY TO_DATE('2011-05-11 00:00:01', 'yyyy-mm-dd hh24:mi:ss') +
                   (ROWNUM - 1) / 24 <=
                   TO_DATE('2011-05-20 23:59:59', 'yyyy-mm-dd hh24:mi:ss')) T1
 WHERE NOT EXISTS
 (SELECT 1
          FROM TEST T2
         WHERE T1.HH = TO_CHAR(T2.TRXN_DT, 'yyyy-mm-dd hh24'));

解决方案 »

  1.   


    SELECT T1.*
      FROM (SELECT TO_CHAR(TO_DATE('2011-05-11 00:00:01',
                                   'yyyy-mm-dd hh24:mi:ss') + (ROWNUM - 1) / 24,
                           'yyyy-mm-dd hh24') HH
              FROM DUAL
            CONNECT BY TO_DATE('2011-05-11 00:00:01', 'yyyy-mm-dd hh24:mi:ss') +
                       (ROWNUM - 1) / 24 <=
                       TO_DATE('2011-05-20 23:59:59', 'yyyy-mm-dd hh24:mi:ss')) T1
     WHERE NOT EXISTS
     (SELECT 1
              FROM TEST T2
             WHERE T1.HH = TO_CHAR(T2.TRXN_DT, 'yyyy-mm-dd hh24'));

    大哥,你这个验证过吗?我这里测试有问题啊
    我的表名是:t_Pol_Gather_Gh_z   时间的字段是:f_time  SELECT T1.*
      FROM (SELECT TO_CHAR(TO_DATE('2011-05-11 00:00:01',
                                   'yyyy-mm-dd hh24:mi:ss') + (ROWNUM - 1) / 24,
                           'yyyy-mm-dd hh24') HH
              FROM DUAL
            CONNECT BY TO_DATE('2011-05-11 00:00:01', 'yyyy-mm-dd hh24:mi:ss') +
                       (ROWNUM - 1) / 24 <=
                       TO_DATE('2011-05-20 23:59:59', 'yyyy-mm-dd hh24:mi:ss')) T1
     WHERE NOT EXISTS
     (SELECT 1
              FROM t_Pol_Gather_Gh_z T2
             WHERE T1.HH = TO_CHAR(T2.f_Time, 'yyyy-mm-dd hh24'));这样写对吗?
      

  2.   


    SELECT T1.*
      FROM (SELECT TO_CHAR(TO_DATE('2011-05-11 00:00:01',
                                   'yyyy-mm-dd hh24:mi:ss') + (ROWNUM - 1) / 24,
                           'yyyy-mm-dd hh24') HH
              FROM DUAL
            CONNECT BY TO_DATE('2011-05-11 00:00:01', 'yyyy-mm-dd hh24:mi:ss') +
                       (ROWNUM - 1) / 24 <=
                       TO_DATE('2011-05-20 23:59:59', 'yyyy-mm-dd hh24:mi:ss')) T1
     WHERE NOT EXISTS
     (SELECT 1
              FROM TEST T2
             WHERE T1.HH = TO_CHAR(T2.TRXN_DT, 'yyyy-mm-dd hh24'));

    大哥,你这个验证过吗?我这里测试有问题啊
    我的表名是:t_Pol_Gather_Gh_z   时间的字段是:f_time  SELECT T1.*
      FROM (SELECT TO_CHAR(TO_DATE('2011-05-11 00:00:01',
                                   'yyyy-mm-dd hh24:mi:ss') + (ROWNUM - 1) / 24,
                           'yyyy-mm-dd hh24') HH
              FROM DUAL
            CONNECT BY TO_DATE('2011-05-11 00:00:01', 'yyyy-mm-dd hh24:mi:ss') +
                       (ROWNUM - 1) / 24 <=
                       TO_DATE('2011-05-20 23:59:59', 'yyyy-mm-dd hh24:mi:ss')) T1
     WHERE NOT EXISTS
     (SELECT 1
              FROM t_Pol_Gather_Gh_z T2
             WHERE T1.HH = TO_CHAR(T2.f_Time, 'yyyy-mm-dd hh24'));这样写对吗?
    验证过,你报什么错?
      

  3.   


    SELECT T1.*
      FROM (SELECT TO_CHAR(TO_DATE('2011-05-11 00:00:01',
                                   'yyyy-mm-dd hh24:mi:ss') + (ROWNUM - 1) / 24,
                           'yyyy-mm-dd hh24') HH
              FROM DUAL
            CONNECT BY TO_DATE('2011-05-11 00:00:01', 'yyyy-mm-dd hh24:mi:ss') +
                       (ROWNUM - 1) / 24 <=
                       TO_DATE('2011-05-20 23:59:59', 'yyyy-mm-dd hh24:mi:ss')) T1
     WHERE NOT EXISTS
     (SELECT 1
              FROM TEST T2
             WHERE T1.HH = TO_CHAR(T2.TRXN_DT, 'yyyy-mm-dd hh24'));

    大哥,你这个验证过吗?我这里测试有问题啊
    我的表名是:t_Pol_Gather_Gh_z   时间的字段是:f_time  SELECT T1.*
      FROM (SELECT TO_CHAR(TO_DATE('2011-05-11 00:00:01',
                                   'yyyy-mm-dd hh24:mi:ss') + (ROWNUM - 1) / 24,
                           'yyyy-mm-dd hh24') HH
              FROM DUAL
            CONNECT BY TO_DATE('2011-05-11 00:00:01', 'yyyy-mm-dd hh24:mi:ss') +
                       (ROWNUM - 1) / 24 <=
                       TO_DATE('2011-05-20 23:59:59', 'yyyy-mm-dd hh24:mi:ss')) T1
     WHERE NOT EXISTS
     (SELECT 1
              FROM t_Pol_Gather_Gh_z T2
             WHERE T1.HH = TO_CHAR(T2.f_Time, 'yyyy-mm-dd hh24'));这样写对吗?
    验证过,你报什么错?

    倒不是报错,我感觉数据查出来的不对啊
      

  4.   

    你理解是正确的,谢谢你啊!刚才看了下数据好像是对的,你能再帮我修改下HH 按时间顺序排列吗?
    在后面加个order by TO_DATE(t1.hh,'YYYY-MM-DD HH24')