Sql Oracle在查询中获取唯一的年份和月份
我有以下查询,返回我正在查找的结果,但事实上我无法让group by工作:Sql Oracle在查询中获取唯一的年份和月份,sql,oracle,Sql,Oracle,我有以下查询,返回我正在查找的结果,但事实上我无法让group by工作: select EXTRACT(month from datetime_insert) m, EXTRACT(year from datetime_insert) y from tst_result_main order by datetime_insert 这将返回以下结果: m y 1 2006 1 2006 2 2006 2 2006 2 2007 2
select EXTRACT(month from datetime_insert) m,
EXTRACT(year from datetime_insert) y
from tst_result_main
order by datetime_insert
这将返回以下结果:
m y
1 2006
1 2006
2 2006
2 2006
2 2007
2 2007
我想要的结果是:
m y
1 2006
2 2006
2 2007
我尝试了以下抛出错误的方法:
select EXTRACT(month from datetime_insert) m,
EXTRACT(year from datetime_insert) y
from tst_result_main
order by datetime_insert group by y, m
错误:
ORA-00933: SQL command not properly ended
00933. 00000 - "SQL command not properly ended"
*Cause:
*Action: Error at Line: 7 Column: 136
任何帮助都将不胜感激您是否尝试过类似于独特价值观的东西:
select DISTINCT
EXTRACT(month from datetime_insert) m
, EXTRACT(year from datetime_insert) y
from tst_result_main
试试这个:
select EXTRACT(month from datetime_insert) m, EXTRACT(year from datetime_insert) y
from tst_result_main
group by EXTRACT(year from datetime_insert), EXTRACT(month from datetime_insert)
order by y,m;
别名不能用于分组依据
表达式
没有聚合功能,您应该使用distinct子句,而不是group by
select DISTINCT
EXTRACT(month from datetime_insert) m
, EXTRACT(year from datetime_insert) y
from tst_result_main
order by y, m
请改为按y、m排序。(当选择DISTINCT时,只能在ORDER BY中指定SELECT列表项。)为什么使用group BY而不使用聚合功能。。使用distinct与
distinct
相关的方法也是可能的,所有方法都可以使用罗马…如果您没有使用聚合函数,那么您应该使用distinct而不是group by,而不使用group by而不使用聚合函数,这在SQL中是不推荐的。@scaisEdgegroup by
提供了区别,那么,我认为我不应该再添加一个额外的distinct
子句。首先,您不能在ORDER BY之后添加GROUP BY子句。他们在SQL简介的第一个小时就教授了这一点。