一回も披露したことのない豆知識

例えば次のようなテーブルがあったとして、
5月17日,ディープ
5月17日,オルフェ
5月10日,オルフェ
5月9日,ディープ
5月2日,ディープ
5月2日,オルフェ

次のように前回の情報を取ってくるようなSQLを書きたいです
5月17日,ディープ,5月9日
5月17日,オルフェ,5月10日
5月10日,オルフェ,5月2日
5月9日,ディープ,5月2日
5月2日,ディープ,null
5月2日,オルフェ,null

A 回答 (2件)

SELECT テーブル.*, (SELECT MAX(T.日付) FROM テーブル AS T


WHERE テーブル.名前 = T.名前 AND テーブル.日付 > T.日付) AS 前回
FROM テーブル
ORDER BY 日付 DESC;
    • good
    • 0
この回答へのお礼

件数が多いためかなり時間がかかりましたが、できました
\(^o^)/
第一関門突破です^^
このSQLを拡張して、さらに必要な情報を取得していきます。
現段階でかなり時間がかかっているため、実運用に耐えられるか不安ですが、ひとまず作業続行します

お礼日時:2021/07/02 06:08

こんなのとか。



1> select DTE,T1.NAM from T1;
DTE NAM
---------- ------
2021-05-17 Deep
2021-05-17 Orphe
2021-05-10 Orphe
2021-05-09 Deep
2021-05-02 Deep
2021-05-02 Orphe

(6 rows affected)

2> select T1.DTE,T1.NAM as NAM,max(T2.DTE) as PRE from T1 left join T1 as T2 on T1.NAM=T2.NAM and T1.DTE>T2.DTE group by T1.DTE,T1.NAM order by T1.DTE desc;

DTE NAM PRE
---------- ------------ -----------------------
2021-05-17 Deep 2021-05-09
2021-05-17 Orphe 2021-05-10
2021-05-10 Orphe 2021-05-02
2021-05-09 Deep 2021-05-02
2021-05-02 Deep NULL
2021-05-02 Orphe NULL

(6 rows affected)
    • good
    • 0
この回答へのお礼

件数が多いためか、タイムアウトになってしまいました
orz

お礼日時:2021/07/02 06:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す