誤った出力結果を返すのリストを格納する特定の日付PIVOT機能は、私が名前の2つのテーブルを持っている
student_record_histのクラスの出席エントリを保存します
class_record_hist特定のclass.Here TRANSACTION_IDが私のデータは、この
0123のように見えます両方のテーブルの主キーになるため、学生の出席
Working_date STUDENT_NAME STUDENT_STATUS ATTENDANCE_CODE TEACHER_UPDATE TRANSACTION_ID
------------- ------------ -------------- --------------- -------------- --------------
2017-11-10 10:00:00 JAMES ABSENT 2344 AB 23453
2017-11-10 10:00:00 PETER ABSENT 2344 AB 23453
2017-11-10 10:00:00 MURPHY PRESENT 1001 PR 23453
2017-11-10 10:00:00 MICA PRESENT 1001 PR 23453
2017-11-10 10:00:00 STELLA PRESENT 1001 PR 23453
2017-11-10 10:00:00 STEPHEN PRESENT 1001 PR 23453
2017-11-10 10:00:00 TRACY PRESENT 1001 PR 23453
2017-11-10 14:00:00 JAMES PRESENT 1001 PR 23454
2017-11-10 14:00:00 PETER PRESENT 1001 PR 23454
2017-11-10 14:00:00 MURPHY PRESENT 1001 PR 23454
2017-11-10 14:00:00 MICA PRESENT 1001 PR 23454
2017-11-10 14:00:00 STELLA PRESENT 1001 PR 23454
2017-11-10 14:00:00 STEPHEN PRESENT 1001 PR 23454
2017-11-10 14:00:00 TRACY ABSENT 2344 AB 23454
2017-11-11 11:24:00 JAMES PRESENT 1001 PR 23454
2017-11-11 11:24:00 PETER PRESENT 1001 PR 23454
2017-11-11 11:24:00 MURPHY PRESENT 1001 PR 23454
2017-11-11 11:24:00 MICA PRESENT 1001 PR 23454
2017-11-11 11:24:00 STELLA PRESENT 1001 PR 23454
2017-11-11 11:24:00 STEPHEN PRESENT 1001 PR 23454
2017-11-11 11:24:00 TRACY PRESENT 1001 PR 23454
2017-11-11 14:24:00 JAMES ABSENT 2344 AB 23454
2017-11-11 14:24:00 PETER ABSENT 2344 AB 23454
2017-11-11 14:24:00 MURPHY ABSENT 2344 AB 23454
2017-11-11 14:24:00 MICA ABSENT 2344 AB 23454
2017-11-11 14:24:00 STELLA ABSENT 2344 AB 23454
2017-11-11 14:24:00 STEPHEN PRESENT 1001 PR 23454
2017-11-11 14:24:00 TRACY PRESENT 1001 PR 23454
私はこれに基づいてレポートを生成しますが、
を記録し、これは
select * from
(
select student_name, student_status,attendance_code,
working_date,class_id from
(
select to_char(a.date_tm,'yyyy-mm-dd hh24:mi:ss') AS working_date,
b.student_name,b.student_status,b.attendance_code,
b.teacher_update,a.transaction_id
from class_record_hist a,student_record_hist b
where a.school = 'DON BOSCO'
and a.building = 'A1'
and a.class_id = 'DB-3452'
and a.date_tm >= to_date('2017-11-10 06:00:00','yyyy-mm-dd hh24:mi:ss')
and a.date_tm <= to_date('2017-11-11 18:00:00','yyyy-mm-dd hh24:mi:ss')
and a.transaction_id = b.transaction_id
order by working_date desc,b.student_name asc
)
)
PIVOT
(
max(attendance_code) as code,
max(student_status) as status
for student_name in ('JAMES','PETER','MURPHY','MICA','STELLA','STEPHEN','TRACY');
) ;
結果のように私のクエリです:以上の結果から
WORKING_DATE CLASS_ID JAMES_STATUS JAMES_CODE PETER_STATUS PETER_CODE MURPHY_STATUS MURPHY_CODE MICA_STATUS MICA_CODE STELLA_STATUS STELLA_CODE STEPHEN_STATUS STEPHEN_CODE TRACY_STATUS TRACY_CODE
------------ -------- ------------ ---------- ------------ ---------- ------------- ----------- ----------- --------- ------------- ----------- -------------- ------------ ------------ ----------
2017-11-10 10:00:00 DB-3452 PRESENT 2344 PRESENT 2344 PRESENT 1001 PRESENT 1001 PRESENT 1001 PRESENT 1001 PRESENT 1001
2017-11-10 14:00:00 DB-3452 PRESENT 1001 PRESENT 1001 PRESENT 1001 PRESENT 1001 PRESENT 1001 PRESENT 1001 PRESENT 2344
2017-11-11 11:24:00 DB-3452 PRESENT 1001 PRESENT 1001 PRESENT 1001 PRESENT 1001 PRESENT 1001 PRESENT 1001 PRESENT 1001
2017-11-11 14:24:00 DB-3452 PRESENT 2344 PRESENT 2344 PRESENT 2344 PRESENT 2344 PRESENT 2344 PRESENT 1001 PRESENT 1001
、あなたが見ることができますデータが正しくありません。
Jamesは、彼のコード2344から見ることができる2つのセッションに欠席していますが、ステータスはまだPresentとして表示されています。同じ問題はレコード全体で発生します。
私は間違っていますか?
ご意見は&と非常に高く評価されていますか?
おかげでまだ私のPivot.Butを変更した結果が正しくない、それは欠席として示されている方法によって、そのサブクエリで順を必要はありませんレコード全体に対して。 – jaggs
あなたは両方のテーブルを用意しておらず、質問の中で作業するので、MAX()をMIN()に変更するだけでした。サブクエリの推奨変更を採用している場合は、その変更を元に戻して、一度に1つの変更のみを処理してください。あなたが上に見ることができるように、私は不在または存在するだけではない、私は両方を取得する –