select count(1) from (select rownum iRow,PKG.* from ( 
select *
  from (select a.GRID_AREA,
               a.area_code,
               t.billing_month,
               t.grid_id,
               t.grid_name,
               b.guide_no,
               b.guide_name,
               c.agent_no,
               c.agent_name,
               nvl(sum(total), 0) total,
               nvl(sum(retotal), 0) retotal,
               nvl(sum(ac_pay), 0) ac_pay,
               nvl(sum(re_pay), 0) re_pay
          from info_t t,
               info_b a,
               info_c b,
               info_g c
         where t.grid_id = a.GRID_ID
           and c.agent_no = t.net_no
           and c.guide_no = b.guide_no
           and 1 = 1
           and a.area_code = '53005'
           and t.billing_month >= '200809'
           and t.billing_month <= '200809'
         group by a.GRID_AREA,
                  a.area_code,
                  t.billing_month,
                  t.grid_id,
                  t.grid_name,
                  b.guide_no,
                  b.guide_name,
                  c.agent_no,
                  c.agent_name) 
 order by grid_id ,billing_month desc)PKG)

解决方案 »

  1.   

    是程序中执行没有数据,而在PL/SQL中有数据?
      

  2.   

    (select rownum iRow,PKG.* from ( 
    select * 
      from (select a.GRID_AREA, 
                  a.area_code, 
                  t.billing_month, 
                  t.grid_id, 
                  t.grid_name, 
                  b.guide_no, 
                  b.guide_name, 
                  c.agent_no, 
                  c.agent_name, 
                  nvl(sum(total), 0) total, 
                  nvl(sum(retotal), 0) retotal, 
                  nvl(sum(ac_pay), 0) ac_pay, 
                  nvl(sum(re_pay), 0) re_pay 
              from info_t t, 
                  info_b a, 
                  info_c b, 
                  info_g c 
            where t.grid_id = a.GRID_ID 
              and c.agent_no = t.net_no 
              and c.guide_no = b.guide_no 
              and 1 = 1 
              and a.area_code = '53005' 
              and t.billing_month >= '200809' 
              and t.billing_month <= '200809' 
            group by a.GRID_AREA, 
                      a.area_code, 
                      t.billing_month, 
                      t.grid_id, 
                      t.grid_name, 
                      b.guide_no, 
                      b.guide_name, 
                      c.agent_no, 
                      c.agent_name) 
    order by grid_id ,billing_month desc)PKG)
    这条脚本有数据,但count就没有数据
      

  3.   

    你确定把from扩号里的执行了有数据。如果有的话肯定count 有的
      

  4.   

    不明白什么意思,
    难道是因为没有commit;
    ?
      

  5.   

    如果都在同一个sqlplus里面运行, 不太可能吧,
      

  6.   

    可能是第一列没有数据为空的吧。你改成count(*)试下
      

  7.   

    确实是这样,count就没有数据,count(*)也没有!
      

  8.   

    改成下面的试试:SELECT COUNT(1)
      FROM (SELECT ROWNUM IROW, PKG.*
              FROM (SELECT A.GRID_AREA,
                           A.AREA_CODE,
                           T.BILLING_MONTH,
                           T.GRID_ID,
                           T.GRID_NAME,
                           B.GUIDE_NO,
                           B.GUIDE_NAME,
                           C.AGENT_NO,
                           C.AGENT_NAME,
                           NVL(SUM(TOTAL), 0) TOTAL,
                           NVL(SUM(RETOTAL), 0) RETOTAL,
                           NVL(SUM(AC_PAY), 0) AC_PAY,
                           NVL(SUM(RE_PAY), 0) RE_PAY
                      FROM INFO_T T, INFO_B A, INFO_C B, INFO_G C
                     WHERE T.GRID_ID = A.GRID_ID
                       AND C.AGENT_NO = T.NET_NO
                       AND C.GUIDE_NO = B.GUIDE_NO
                       AND 1 = 1
                       AND A.AREA_CODE = '53005'
                       AND T.BILLING_MONTH >= '200809'
                       AND T.BILLING_MONTH <= '200809'
                     GROUP BY A.GRID_AREA,
                              A.AREA_CODE,
                              T.BILLING_MONTH,
                              T.GRID_ID,
                              T.GRID_NAME,
                              B.GUIDE_NO,
                              B.GUIDE_NAME,
                              C.AGENT_NO,
                              C.AGENT_NAME) PKG)
      

  9.   

    把下面的SQL QUERY换成脚本里的代码再比较一下试试:
    SELECT COUNT(1)
      FROM (SELECT A.GRID_AREA,
                           A.AREA_CODE,
                           T.BILLING_MONTH,
                           T.GRID_ID,
                           T.GRID_NAME,
                           B.GUIDE_NO,
                           B.GUIDE_NAME,
                           C.AGENT_NO,
                           C.AGENT_NAME,
                           NVL(SUM(TOTAL), 0) TOTAL,
                           NVL(SUM(RETOTAL), 0) RETOTAL,
                           NVL(SUM(AC_PAY), 0) AC_PAY,
                           NVL(SUM(RE_PAY), 0) RE_PAY
                      FROM INFO_T T, INFO_B A, INFO_C B, INFO_G C
                     WHERE T.GRID_ID = A.GRID_ID
                       AND C.AGENT_NO = T.NET_NO
                       AND C.GUIDE_NO = B.GUIDE_NO
                       AND 1 = 1
                       AND A.AREA_CODE = '53005'
                       AND T.BILLING_MONTH >= '200809'
                       AND T.BILLING_MONTH <= '200809'
                     GROUP BY A.GRID_AREA,
                              A.AREA_CODE,
                              T.BILLING_MONTH,
                              T.GRID_ID,
                              T.GRID_NAME,
                              B.GUIDE_NO,
                              B.GUIDE_NAME,
                              C.AGENT_NO,
                              C.AGENT_NAME
                     ORDER BY GRID_ID, BILLING_MONTH DESC)
      

  10.   

    我调过了,把  ORDER BY GRID_ID, BILLING_MONTH DESC 注释了,或者把ROWNUM IROW 这个注释了就可以,怎么解决?
      

  11.   

    怀疑可能是你的SQL语句执行错了,而不是检索出0件,你把order by grid_id ,billing_month desc 换成
    order by t.grid_id ,t.billing_month desc 试试
      

  12.   

    曾经帮同事调试过这样的问题。
    原因很简单,没有同步。
    脚本中读的是缓冲区中的脏数据,而count(*)=0是他在sqlplus中执行的。
    不知LZ的问题是否也如此。
      

  13.   

    不知楼主现在咋样了?小人有一计:
    是不是在插入时忘记 COMMIT 了?
    导致在其它地方查询查不到?
      

  14.   

    select count(1) from (tempdataset) tab; tempdataset有数据,但count结果为0?真奇怪,关注一下参议lz细心检查语法,逐级调试