举例如下:
select t.purchasecode,
       t.a
 from (
          SELECT coun.purchasecode,
                coun.scandate,
                count(*) a
          FROM APP_COUNTERFOIL  COUN
          group by COUN.PURCHASECODE
 )
这种情况是对的,但是
       coun.scandate,
                count(*) a
          FROM APP_COUNTERFOIL  COUN
          group by COUN.PURCHASECODE
这种情况是错的,为什么?
子查询 selset 

解决方案 »

  1.   

    给你简单说下,select 语句中的字段可以使group by中的字段 ,如果不是group by中的字段则必须使用聚合函数     SELECT coun.purchasecode,
                     coun.scandate,
                     count(*) a
               FROM APP_COUNTERFOIL  COUN  
               group by COUN.PURCHASECODE 这个貌似也不对哦
      

  2.   

    你第一个是错的,第二个也是错的哦
    select 后面取的字段必须要在group by字段后面有才行,除了使用聚合函数的
      

  3.   

    第一个怎么能执行成功,coun.scandate都没有在group by 里面
      

  4.   

    第一个是成功的,第二个我写错了了,应该是 
             select  coun.PURCHASECODE,
                    count(*) a
              FROM APP_COUNTERFOIL  COUN
              group by COUN.PURCHASECODE
    我想和知道为什么第一个执行成功了。大家可以去试试
      

  5.   

    你得第一个解析后group by purchasecod,是允许的、
    但是第二个group by PURCHASECODE,而查询的是scandate。
      

  6.   


    果真这样啊
    这个会不会是因为你外层查询就没有用到scandate,所以子查询中的scandate字段orcle自动忽略了;
    你试试单独执行子查询看他会不会报错
      

  7.   


    果真这样啊
    这个会不会是因为你外层查询就没有用到scandate,所以子查询中的scandate字段orcle自动忽略了;
    你试试单独执行子查询看他会不会报错单会报错,我想知道是什么原因,oracle的解析问题还是别的什么
      

  8.   

    Group by规则,出现在select列表中的字段,如果查询列没有出现主函数中,就必须出现在group by 列表中。