回答編集履歴
2
訂正
test
CHANGED
@@ -42,7 +42,7 @@
|
|
42
42
|
|
43
43
|
select test.No, range.開始日, test.値
|
44
44
|
|
45
|
-
from range
|
45
|
+
from range left join test
|
46
46
|
|
47
47
|
on range.開始日 between test.開始日 and test.終了日
|
48
48
|
|
1
追記
test
CHANGED
@@ -1,4 +1,22 @@
|
|
1
|
+
求める結果にはなっていますよ?
|
2
|
+
|
3
|
+
```SQL
|
4
|
+
|
5
|
+
select No, GENERATE_SERIES(開始日, 終了日,'1 day'::interval)::date 開始日, 値
|
6
|
+
|
7
|
+
from (values
|
8
|
+
|
9
|
+
(1,'2019/12/01'::date, '2019/12/05'::date, 12345)
|
10
|
+
|
11
|
+
, (2,'2019/12/06'::date, '2019/12/07'::date, 99999)
|
12
|
+
|
13
|
+
) as w(No, 開始日, 終了日, 値)
|
14
|
+
|
15
|
+
```
|
16
|
+
|
17
|
+
|
18
|
+
|
1
|
-
**GENERATE_SERIES()**に与える範囲をデータの最小と最大にします。
|
19
|
+
データの存在しない日付も出力したいのなら、**GENERATE_SERIES()**に与える範囲をデータの最小と最大にします。
|
2
20
|
|
3
21
|
```SQL
|
4
22
|
|
@@ -16,16 +34,16 @@
|
|
16
34
|
|
17
35
|
), range as (
|
18
36
|
|
19
|
-
select GENERATE_SERIES(min(開始日), max(終了日),'1 day'::interval)::date
|
37
|
+
select GENERATE_SERIES(min(開始日), max(終了日),'1 day'::interval)::date 開始日
|
20
38
|
|
21
39
|
from test
|
22
40
|
|
23
41
|
)
|
24
42
|
|
25
|
-
select range.
|
43
|
+
select test.No, range.開始日, test.値
|
26
44
|
|
27
45
|
from range inner join test
|
28
46
|
|
29
|
-
on range.
|
47
|
+
on range.開始日 between test.開始日 and test.終了日
|
30
48
|
|
31
49
|
```
|