回答編集履歴
6
修正
test
CHANGED
@@ -1,7 +1,3 @@
|
|
1
|
-
こんにちは。
|
2
|
-
|
3
|
-
|
4
|
-
|
5
1
|
こんな感じでどうでしょうか。
|
6
2
|
|
7
3
|
概略としては、
|
@@ -12,7 +8,7 @@
|
|
12
8
|
|
13
9
|
(最初の空き時間はテーブルAから求めているので、NUll判定で除去)
|
14
10
|
|
15
|
-
・上記をUNIONでマージ(予定が無い場合はUNIONでマージされて結果テーブルAと同じになる)
|
11
|
+
・上記をUNIONでマージ(予定が無い場合はUNIONでマージされて、結果、テーブルAと同じになる)
|
16
12
|
|
17
13
|
|
18
14
|
|
5
修正
test
CHANGED
@@ -26,6 +26,8 @@
|
|
26
26
|
|
27
27
|
from tbla as ta
|
28
28
|
|
29
|
+
where 開始時刻<((select min(開始時刻) from tblb where 場所CD=ta.場所CD and 日付=ta.日付))
|
30
|
+
|
29
31
|
union
|
30
32
|
|
31
33
|
select 日付, 場所CD, 前回終了時刻, 開始時刻
|
@@ -44,6 +46,8 @@
|
|
44
46
|
|
45
47
|
from tbla as ta
|
46
48
|
|
49
|
+
where 終了時刻>((select max(終了時刻) from tblb where 場所CD=ta.場所CD and 日付=ta.日付))
|
50
|
+
|
47
51
|
order by 場所CD,日付,開始時刻
|
48
52
|
|
49
53
|
```
|
4
修正
test
CHANGED
@@ -44,7 +44,7 @@
|
|
44
44
|
|
45
45
|
from tbla as ta
|
46
46
|
|
47
|
-
order by 日付,開始時刻
|
47
|
+
order by 場所CD,日付,開始時刻
|
48
48
|
|
49
49
|
```
|
50
50
|
|
3
修正
test
CHANGED
@@ -30,7 +30,7 @@
|
|
30
30
|
|
31
31
|
select 日付, 場所CD, 前回終了時刻, 開始時刻
|
32
32
|
|
33
|
-
from (select *, lag(終了時刻,1) over(order by
|
33
|
+
from (select *, lag(終了時刻,1) over(partition by 場所CD, 日付 order by, 開始時刻) as 前回終了時刻 from tblb) tmp
|
34
34
|
|
35
35
|
where 前回終了時刻 is not null
|
36
36
|
|
2
修正
test
CHANGED
@@ -47,3 +47,5 @@
|
|
47
47
|
order by 日付,開始時刻,場所CD
|
48
48
|
|
49
49
|
```
|
50
|
+
|
51
|
+
手っ取り早くunionにしていますが、時間がかかるようなら除外条件(予定が無い場合)をいれて、union allとすれば、unionマージの時間は省けます。
|
1
修正
test
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
, 開始時刻
|
24
24
|
|
25
|
-
, coalesce((select min(開始時刻) from tblb where 日付=ta.日付), 終了時刻) as 終了時刻
|
25
|
+
, coalesce((select min(開始時刻) from tblb where 場所CD=ta.場所CD and 日付=ta.日付), 終了時刻) as 終了時刻
|
26
26
|
|
27
27
|
from tbla as ta
|
28
28
|
|
@@ -38,7 +38,7 @@
|
|
38
38
|
|
39
39
|
select 日付, 場所CD
|
40
40
|
|
41
|
-
, coalesce((select max(終了時刻) from tblb where 日付=ta.日付), 開始時刻)
|
41
|
+
, coalesce((select max(終了時刻) from tblb where 場所CD=ta.場所CD and 日付=ta.日付), 開始時刻)
|
42
42
|
|
43
43
|
, 終了時刻
|
44
44
|
|