Oracle11g 如何在oracle中从表中获取列值和列计数
我需要oracle中表中的列值和相同的列计数 以下是查询:Oracle11g 如何在oracle中从表中获取列值和列计数,oracle11g,Oracle11g,我需要oracle中表中的列值和相同的列计数 以下是查询: select username, count(username) from ind_emp_leaves where status != 'Approved' and (leavefromdate BETWEEN to_date('08-09-2013','dd/MM/yyyy') AND to_date('11-09-2013','dd/MM/
select username,
count(username)
from ind_emp_leaves
where status != 'Approved'
and (leavefromdate BETWEEN to_date('08-09-2013','dd/MM/yyyy')
AND to_date('11-09-2013','dd/MM/yyyy')) OR
(LEAVETODATE BETWEEN to_date('08-09-2013','dd/MM/yyyy')
AND to_date('11-09-2013','dd/MM/yyyy'))
上面的查询显示错误:
SQL错误:ORA-00937:没有单个组函数
如果没有用户名字段,它将显示计数值,但我同时需要用户名值和用户名计数。假设您需要每个用户的计数,这将给出正确的结果:
select username, count(*) from ind_emp_leaves
where (status != 'Approved')
and ((leavefromdate BETWEEN to_date('08-09-2013','dd/MM/yyyy')
AND to_date('11-09-2013','dd/MM/yyyy'))
OR (LEAVETODATE BETWEEN to_date('08-09-2013','dd/MM/yyyy')
AND to_date('11-09-2013','dd/MM/yyyy')))
group by username
请注意,我在leavedate部分周围添加了其他参数-我假设您希望在两个时间间隔检查“状态!=‘已批准’”部分,而不仅仅是第一个时间间隔 您可以使用以下代码获得所需的结果
select username, count(*) from ind_emp_leaves
where status != 'Approved')
and ((leavefromdate BETWEEN to_date('08-09-2013','dd/MM/yyyy')
AND to_date('11-09-2013','dd/MM/yyyy'))
OR (LEAVETODATE BETWEEN to_date('08-09-2013','dd/MM/yyyy')
AND to_date('11-09-2013','dd/MM/yyyy')))
group by username
嘿,如果你正在使用聚合函数,比如
AVG
COLLECT
CORR
CORR_*
COUNT
COVAR_POP
COVAR_SAMP
CUME_DIST
DENSE_RANK
FIRST
GROUP_ID
GROUPING
GROUPING_ID
LAST
您应该使用group by function 欢迎来到StackOverflow。请以可读的方式格式化您的代码(我已经为您完成了)。如果我删除了其他参数,则我的计数显示错误,以前我的计数为2@appu对不起,我不明白你想说什么-你在运行我的查询时出错了吗?