我需要按天统计用户的注册数并分页
没分页的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
------解决方案--------------------
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
------解决方案--------------------
子查询能查到信息是正常的,你这里的GROUP BY报错,你应该再认真看5楼的第二点
------解决方案--------------------
试试这个。。。
select t2.dates1 from (select rownum r,t1.* ,TO_CHAR(T1.CREATETIME,'YYYY-MM-DD') dates1
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;