SQLで欠損日付のレコードを補完したい
create table mydata (
shopname varchar(10),
targetdate varchar(8),
salescount int
);
'店舗A', '20180626', 100
'店舗A', '20180625', 105
'店舗B', '20180625', 110
'店舗C', '20180625', 80
'店舗A', '20180624', 90
'店舗B', '20180624', 100
'店舗C', '20180624', 80
上記のように 店舗 A/B/C それぞれについて、日付別に販売数があるとして、
直近の 20180626 については店舗B/C からはまだデータが未着のため、
レコードがありません。
このようなテーブルについて、
'店舗B', '20180626', 0 (null でも可)
'店舗C', '20180626', 0 (null でも可)
を補完するような view 1つだけを作りたいのですが、可能でしょうか。目的は
BI ツールで各店舗の推移を確認する際に各店舗で日付をそろえたいのです。
直近N日の日付を持ったテーブルを作成し、それと left outer join すればよいかと
思うのですが、店舗B だけ、あるいは 店舗C だけならできるものの、店舗B/C 両方を
実現するやり方がわかりません。
使っているのは BigQuery なのですが、Oracle でも MySQL でも PostgreSQL でも
SQL 一般でご回答いただければと思います。元テーブルはいじらず、ストアド
ファンクションなどはナシ、作成する view は 1つ (店舗別に view を作らない)
という前提でお願いしたいです。
なお、データ未着は直近 1~3日程度はありえます。
よろしくお願いいたします。