0
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 表达式”

我应该做些什么 ?

4

1 回答 1

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 BY 列
    必须匹配外部查询的选择列表。
    GROUP BY 操作不需要的子查询的选择列表中的任何列都
    将被忽略而不会出错。
  • 涉及前面表达式的表达式,对于组中的所有行计算为相同的值

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

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

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

于 2013-08-26T09:09:50.427 回答