実現したいこと
DB初心者です、ご教示いただけますと幸いです。
エラー発生時刻が登録されている既存のトランザクションテーブルから、
エラー開始時刻と終了時刻を抽出するselect文を作りたいと思っています。
<使用環境>
postgreSQL12
windows10
具体的な内容としては、
SQL
1CREATE TABLE tr_machine_error ( 2 machine VARCHAR(2), 3 error_code VARCHAR(3), 4 error_date DATETIME 5);
<トランザクションテーブル>
machine | error_code | error_date |
---|---|---|
A | E01 | 2020/11/17 12:00:00 |
A | E01 | 2020/11/17 12:10:00 |
A | E01 | 2020/11/17 12:20:00 |
A | E01 | 2020/11/17 12:30:00 |
A | E02 | 2020/11/17 14:20:00 |
A | E02 | 2020/11/17 14:30:00 |
A | E01 | 2020/11/17 16:30:00 |
A | E01 | 2020/11/17 16:40:00 |
A | E01 | 2020/11/17 16:50:00 |
B | E02 | 2020/11/17 17:00:00 |
B | E02 | 2020/11/17 17:10:00 |
B | E02 | 2020/11/17 17:20:00 |
A | E03 | 2020/11/17 19:40:00 |
A | E03 | 2020/11/17 19:50:00 |
A | E03 | 2020/11/17 20:00:00 |
A | E03 | 2020/11/17 20:10:00 |
といったテーブルが存在するとして、
出力したい結果は
machine | error_code | error_start | error_stop |
---|---|---|---|
A | E01 | 2020/11/17 12:00:00 | 2020/11/17 12:30:00 |
A | E02 | 2020/11/17 14:20:00 | 2020/11/17 14:30:00 |
A | E01 | 2020/11/17 16:30:00 | 2020/11/17 16:50:00 |
B | E02 | 2020/11/17 17:00:00 | 2020/11/17 17:20:00 |
A | E03 | 2020/11/17 19:40:00 | 2020/11/17 20:10:00 |
このように、マシンorエラーコードが切り替わったタイミングで、
開始時刻と停止時刻がわかる内容を出力させたいです。
試してみたこと
SQL
1SELECT 2 machine, 3 error_code, 4 max(error_date), 5 min(error_date) 6from 7 tr_machine_error 8group by 9 machine,error_code
maxとminで出力させようと思ったのですが、上記の表だと『マシンAとE01』が2回登場するため
machine | error_code | error_start | error_stop |
---|---|---|---|
A | E01 | 2020/11/17 12:00:00 | 2020/11/17 16:50:00 |
となってしまいます。
わかりづらく申し訳ありませんが、ご教示いただけると幸いです。
何か疑問点などあれば、ご質問いただければと思います。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー