日期:2014-05-16  浏览次数:20829 次

请看下我这个统计每天用户注册数并分页的sql哪出毛病了!急
我需要按天统计用户的注册数并分页
没分页的sql的是正确的,
SELECT TO_CHAR(T.CREATETIME,'YYYY-MM-DD') dates,COUNT(*) nums 
from USERACCOUNT T 
WHERE CREATETIME BETWEEN TO_DATE('2013-05-17 13:16:16', 'YYYY-MM-DD HH24:MI:SS:') and TO_DATE('2013-04-23 10:28:42', 'YYYY-MM-DD HH24:MI:SS:') 
GROUP BY TO_CHAR(T.CREATETIME,'YYYY-MM-DD') 
ORDER BY dates 


分页:
(select rownum r,t1.* ,TO_CHAR(T1.CREATETIME,'YYYY-MM-DD') dates 
from USERACCOUNT t1 
where rownum<18 AND CREATETIME BETWEEN TO_DATE('2011-05-17 13:16:16', 'YYYY-MM-DD HH24:MI:SS:') and TO_DATE('2013-09-23 10:28:42', 'YYYY-MM-DD HH24:MI:SS:')
) t2
where t2.r>15 
GROUP BY dates1 
ORDER BY dates1;

怎么查都不对,报错[Err] ORA-00904: "DATES1": invalid identifier

------解决方案--------------------
引用:
select t2.*,TO_CHAR(t2.dates,'YYYY-MM-DD') dates1 from 

(select rownum r,t1.* ,TO_CHAR(T1.CREATETIME,'YYYY-MM-DD') dates 
from USERACCOUNT t1 
where rownum<18 AND CREATETIME BETWEEN TO_DATE('2011-05-17 13:16:16', 'YYYY-MM-DD HH24:MI:SS:') and TO_DATE('2013-09-23 10:28:42', 'YYYY-MM-DD HH24:MI:SS:')
) t2
where t2.r>15 
GROUP BY dates1 
ORDER BY dates1;
这样的也不行

1,GROUP BY dates1 中date1不能是外层查询字段的别名;
2,“select t2.*,TO_CHAR(t2.dates,'YYYY-MM-DD') dates1 from”,除了聚合函数外,select 后只能出现GROUP BY后有的字段
------解决方案--------------------
你想聚合什么字段统计,如果不需要的就直接
select t2.* from 
(select rownum r,t1.* ,TO_CHAR(T1.CREATETIME,'YYYY-MM-DD') dates 
from USERACCOUNT t1 
where rownum<18 AND CREATETIME BETWEEN TO_DATE('2011-05-17 13:16:16', 'YYYY-MM-DD HH24:MI:SS:') and TO_DATE('2013-09-23 10:28:42', 'YYYY-MM-DD HH24:MI:SS:')
) t2
where t2.r>15


------解决方案--------------------
引用:
Quote: 引用:

GROUP BY dates1 
date1不能是外层查询字段的别名


select t2.* from 
(select rownum r,t1.* ,TO_CHAR(T1.CREATETIME,'YYYY-MM-DD') dates 
from USERACCOUNT t1