SQLでGROUP BYを使うと普通は下のようになると思います。
TBL1
DATE PRODUCT
2022-03-05 TYPE A
2022-03-10 TYPE B
2022-04-15 TYPE C
2022-04-21 TYPE D
TBL2
DATE VALUE
2022-03-05 10
2022-03-10 15
2022-04-15 8
2022-04-21 13
SQL
SELECT YEAR(DATE),MONTH(DATE) MAX(VALUE) V FROM TBL1 LEFT OUTER JOIN TBL2 ON TBL1.DATE=TBL2.DATE
GROUP BY YEAR(DATE) Y,MONTH(DATE) M
Y M V
2022 3 15
2022 4 13
この時、もし2022-05-05 のレコードがTBL1にあって上記のSQL を実行すると
Y M V
2022 3 15
2022 4 13
2022 5 null
のように5月のレコードはnullになると思いますが、これをnullだったら前月の値をセットすることは可能でしょうか。
プログラミング言語だと、ループ中に前月レコードをprevValueなどの変数に確保しておき、
nullだったらprevValueを結果にセットするなどできると思いますが、SQLで可能でしょうか。
よろしくお願いいたします。
あなたの回答
tips
プレビュー