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表达式”
答案 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列表中,这是错误的来源。