大家好
我做一个查询 语句如下
select to_char(T.日期,'yyyy-mm') 年月
,count(*) 总量
,(select count(*) from 已完成 T1 where to_char(T1.完成时间,'yyyy-mm')=to_char(T.日期,'yyyy-mm')) 完成量
from 装卸明细 T
group by to_char(T.日期,'yyyy-mm')这是一个很简单的查询,可是执行就提示“ORA-00979: not a group by expression”唉 语义很明确,很简单的
请各位高手指点一下吧
我做一个查询 语句如下
select to_char(T.日期,'yyyy-mm') 年月
,count(*) 总量
,(select count(*) from 已完成 T1 where to_char(T1.完成时间,'yyyy-mm')=to_char(T.日期,'yyyy-mm')) 完成量
from 装卸明细 T
group by to_char(T.日期,'yyyy-mm')这是一个很简单的查询,可是执行就提示“ORA-00979: not a group by expression”唉 语义很明确,很简单的
请各位高手指点一下吧
解决方案 »
- Update时出错
- oracle 问题
- 求教一个优化查询的办法!!!
- 在oracle的存储过程中如何调用sqlldr
- 10G不是已经带RAC吗?为何还有RAC单独的产品?
- 关于加密存储过程的问题,在线等==================================?
- oracle10g修改了IP无法启动的问题
- 如果将DBA角色赋予某个用户?
- 怎样同时执行多个SQL文件?多谢了!
- 如何将dbf格式的文件到入oracle
- 外联结问题(在线等)
- 用了oracle application server 10g,可以在IE中打开login.frm,但点登录时总是出现invalid login setting
,count(*) 总量
,(select count(*) from 已完成 T1 where to_char(T1.完成时间,'yyyy-mm')=to_char(T.日期,'yyyy-mm')) 完成量
from 装卸明细 T
group by to_char(T.日期,'yyyy-mm')
,count(t.*) 总量
,count(t1.*)
from 装卸明细 T , 已完成 T1
where to_char(T1.完成时间,'yyyy-mm')=to_char(T.日期,'yyyy-mm')) 完成量
group by to_char(T.日期,'yyyy-mm')
,count(T) 总量,
,count(T1) 完成量
from 装卸明细 T ,
已完成 T1
where to_char(T1.完成时间,'yyyy-mm')=to_char(T.日期,'yyyy-mm')
group by to_char(T.日期,'yyyy-mm')
至于你写的为啥不行 , 因为oracle中没有你那中语法
COUNT(T1) 统计该列总量,
COUNT(*) 统计所有字段的总量. 在T1不为空的情况下,两个值应该是一样的.
COUNT(*)中还包含其他的字段, 所以也要GROUP BY
不知道 你明白了吗?
COUNT(T.*) 总量,
COUNT(t1.*) 完成量
FROM 装卸明细 T,已完成 T1
WHERE TO_CHAR(T1.完成时间, 'yyyy-mm') = TO_CHAR(T.日期, 'yyyy-mm')
GROUP BY TO_CHAR(T.日期, 'yyyy-mm')
另外在问下count(表明别名)可以算出记录条数么我这里为什么不可以
首先感谢大家的热心帮助
但是你们提供的办法是不可以的
我根据你们的建议改成如下语句
select to_char(T.日期,'yyyy-mm') 年月
,count(T.ID) 总量
,count(T1.ID) 完成量
from 装卸明细 T,已完成 T1
where to_char(T1.完成时间,'yyyy-mm')=to_char(T.日期,'yyyy-mm')
group by to_char(T.日期,'yyyy-mm')得出的结果如下
年月 总量 完成量
2008-03 7090 7090
2008-04 1866 1866
可是我在已完成里只有2条数据,3、4月各一条
所以你们的方法都不对
再次感谢大家的帮忙
——为了赶进度,我建了两个视图 然后将2个视图关联起来 得到了我要的结果
但是这个问题我还会继续研究
希望大家多多帮忙
对了 我是在ora10g上执行的
from 装卸明细 T left outer join (select 完成时间,count(*) from 已完成 group by 完成时间) T1 on to_char(T1.完成时间,'yyyy-mm')=to_char(T.日期,'yyyy-mm')) group by to_char(T.日期,'yyyy-mm')
这样再试试