Oracle SQL - 使用GROUP BY时出错

时间:2013-08-26 07:59:44

标签: sql oracle group-by

select i.sicil_no,
       m.adi,
       m.soyadi,
       i.net_tutar,
       i.odeme_tarihi 
  from ibrmt050 i,
       mismt301 m 
where (i.sicil_no=m.sicil_no and 
       odeme_turu='36'       and 
       odeme_tarihi between '01/01/2012' and '30/06/2012')
GROUP BY TO_CHAR(i.odeme_tarihi,'MM') ,
         To_CHAR(i.odeme_tarihi,'YYYY') 
ORDER BY TO_CHAR(i.odeme_tarihi,'YYYY') ,
         TO_CHAR(i.odeme_tarihi,'MM');

我想逐月列出此查询,但它会出错。

  

“不是GROUP BY表达式”

我该怎么办?

1 个答案:

答案 0 :(得分:1)

根据文件:http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_10002.htm

  

选择列表的限制
选择列表受以下限制:

     

如果您还在此语句中指定了group_by_clause,那么这个   选择列表只能包含以下类型的表达式:

     
      
  • 常量
  •   
  • 聚合函数和USER,UID和SYSDATE函数
  •   
  • 表达式与group_by_clause中的表达式相同。如果group_by_clause在子查询中,则为GROUP的GROUP BY列   子查询必须与外部查询的选择列表匹配。任何栏目   在GROUP中不需要的子查询的选择列表中   忽略BY操作而不会出错。
  •   
  • 涉及前面表达式的表达式,它们为组中的所有行计算相同的值
  •   

查询的select语句包含以下列:

select i.sicil_no,
       m.adi,
       m.soyadi,
       i.net_tutar,
       i.odeme_tarihi

未列在GROUP BY列表中,这是错误的来源。