我当前的sql:
select s.dcid, substr(s.lastfirst,0,3), to_char(a.att_date, 'mm/dd/yyyy'), a.periodid, p.name, a.attendance_codeid, ac.att_code, count(*)
from students s
join attendance a on s.id = a.studentid
join period p on a.periodid = p.id
join attendance_code ac on a.attendance_codeid = ac.id
WHERE ac.att_code IS NOT NULL
AND s.schoolid = 109
AND s.enroll_status = 0
AND s.student_number = 100887
AND a.att_date >= to_date('08/15/2013', 'mm/dd/yyyy')
group by s.dcid, s.lastfirst, to_char(a.att_date, 'mm/dd/yyyy'), a.periodid, p.name, a.attendance_codeid, ac.att_code
输出:
我想让输出按顺序编号 count(*) 列所在的每条记录,从每个新组的 1 开始,并将总数放在组的底部,但我不知道该怎么做. 我已经尝试通过表达式在组的各个部分汇总,但它最终给出了日期、周期等的小计……我只需要为学生总计(s.dcid 或 s.lastfirst)
[每个请求的附加信息...]
我希望获得一个报告,我的最终用户可以在其中搜索在某个日期范围内具有给定数量出勤记录的学生。例如,如果最终用户想要查找在 2013 年 10 月 1 日到 2013 年 10 月 31 日之间缺勤 20 次的学生,其中 att_code 是 A、C、E、G... 等之一。一旦报告运行,我想向他们展示缺席发生的日期,以及用作视觉验证找到的记录确实符合他们的搜索条件的代码。
输出应该看起来像当前输出,但 COUNT(*) 列除外,这是我现在挂断的地方。我喜欢 row_number 如何按顺序编号每条记录,但我仍在寻找的是如何在组(学生)更改时重置顺序编号。
例如...
DCID S.LASTFIRST A.ATT_DATE PERIODID NAME ATT_CODE COUNT(or # or Num...)
1006 Aco 08/29/2013 1704 4 W 1
1006 Aco 09/03/2013 1701 1 6 2
1006 Aco 09/05/2013 1706 6 G 3
...
1006 Aco 10/04/2013 1706 6 z 20
2543 Bro 08/29/2013 1704 4 W 1
2543 Bro 09/03/2013 1701 1 6 2
2543 Bro 09/05/2013 1706 6 G 3
...
2543 Bro 10/04/2013 1706 6 z 20
3121 Com 08/29/2013 1704 4 W 1
3121 Com 09/03/2013 1701 1 6 2
3121 Com 09/05/2013 1706 6 G 3
...
3121 Com 10/04/2013 1706 6 z 20
当然,在此示例中,我通过将三个组中的每一个中的行号 4 - 19 替换为“...”来缩写输出,我不想从字面上输出它。