0

私の現在の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

出力: SQL出力

count(*) 列がある各レコードに順番に番号を付けて、新しいグループごとに 1 から出力し、グループの一番下に合計を入れたいと思いますが、その方法がわかりません。 . グループのさまざまな部分で式によるロールアップを試みましたが、日付、ピリオド ID などの小計が表示されてしまいます...学生 (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

もちろん、この例では、3 つのグループのそれぞれの行番号 4 ~ 19 を「...」に置き換えて、出力を省略しています。これを文字通り出力したくはありません。

4

2 に答える 2