適切なSQL式の作成に問題があります。SQL JOIN - 2番目のテーブルからMAX DateTimeを取得し、前のMAXの後の最初のDateTimeを他の値のために取得します。
私はその後、私はそのチケットがVENDORステータス(最後のVENDORステータス)を最後に入力した時間(最大時間)であったものを取得する必要がある場所からテーブルSTATUSHISTORYを持つ列TICKETID
TICKETID
1000
1001
とテーブルTICKET
を持っており、 VENDORステータスを終了すると(VENDORステータスを終了すると、最初の次のINPROGステータスが表示されますが、VENDORステータスの後の最初のINPROGのみ、VENDORステータスの次のステータスは常にINPROGです)。また、IDのVENDORステータスがSTATUSHISOTRYに全く存在しないこともあります(その後はNULLを返す必要があります)。ただし、INPROGは常に存在します.VENDORステータスの前、後、および後になります。 STATUSHISTORYの例を次に示します。
ID TICKETID STATUS DATETIME
1 1000 INPROG 01.01.2017 10:00
2 1000 VENDOR 02.01.2017 10:00
3 1000 INPROG 03.01.2017 10:00
4 1000 VENDOR 04.01.2017 10:00
5 1000 INPROG 05.01.2017 10:00
6 1000 HOLD 06.01.2017 10:00
7 1000 INPROG 07.01.2017 10:00
8 1001 INPROG 02.02.2017 10:00
9 1001 VENDOR 03.02.2017 10:00
10 1001 INPROG 04.02.2017 10:00
11 1001 VENDOR 05.02.2017 10:00
のでTICKET
テーブルからクエリを実行すると、テーブルSTATUSHISTORYでJOIN
をやった結果は次のようになります。
ID VENDOR_ENTERED VENDOR_EXITED
1000 04.01.2017 10:00 05.01.2017 10:00
1001 05.02.2017 10:00 null
ID 1000
のための最後のVENDORステータスが04.01.2017
と最初 INPROGであったので、そのIDのVENDORステータス後のステータスは05.01.2017
であり、ID 1001の場合、最後のVENDORステータスは05.02.2017
であり、そのINPROGステータスはまだ発生していませんでした。 VENDORが存在しなかった場合、結果では両方の列がnullになります。 私は本当にこのことに固執しています。異なるJOINを試していますが、進歩はありません。 私を助けることができれば、事前にありがとうございます。
ありがとう – Dejan