PostgreSQL データの存在しない出力結果を0で埋めたい。
テーブルに存在しない、SQLの出力結果を0で埋めたいと考えております。
以下の様なSQLを作成したのですが、理想とする結果になりません。
SELECT
l.place_id,
sum(case when (l.type = '01') then 1 else 0 end ) as a1,
sum(case when (l.type != '01') then 1 else 0 end ) as a2,
sum(case when (l.type = '02') then 1 else 0 end ) as a3,
sum(case when (l.type = '03') then 1 else 0 end ) as a4,
sum(case when (l.out in ('02','03') ) then 1 else 0 end ) as a5
FROM
l_test l
WHERE
l.day >= '20150441'
and l.day <= '20160331'
GROUP BY
l.place_id
ORDER BY
l.place_id;
出力される結果(結果の値は編集しています。)
place_id | a1 | a2 | a3 | a4 | a5
----------+------+------+------+------+------
1 | 6 | 5 | 4 | 3 | 2
4 | 1 | 1 | 1 | 1 | 1
8 | 2 | 3 | 4 | 5 | 6
理想とする結果
place_id | a1 | a2 | a3 | a4 | a5
----------+------+------+------+------+------
1 | 6 | 5 | 4 | 3 | 2
2 | 0 | 0 | 0 | 0 | 0
3 | 0 | 0 | 0 | 0 | 0
4 | 1 | 1 | 1 | 1 | 1
5 | 0 | 0 | 0 | 0 | 0
6 | 0 | 0 | 0 | 0 | 0
7 | 0 | 0 | 0 | 0 | 0
8 | 2 | 3 | 4 | 5 | 6
9 | 0 | 0 | 0 | 0 | 0
別テーブルにpriceというテーブルが存在します。
priceテーブル
id | name |
----+------+
1 | 青森 |
2 | 秋田 |
3 | 岩手 |
4 | 山形 |
5 | 宮城 |
6 | 福島 |
7 | 東京 |
8 | 京都 |
9 | 大阪 |
lenテーブルに存在しないplace_id(priceのid)データを0で埋めるようなSQLは、作成可能なのでしょうか。
ご回答お願い致します。
また、回答するにあたって不足情報が有りましたらご指摘お願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。