回答編集履歴

5

訂正

2020/09/01 12:31

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -26,7 +26,7 @@
26
26
 
27
27
  select b1.column1, max(b2.column1) as b2_column1
28
28
 
29
- from before b1 left join befor b2
29
+ from before b1 left join before b2
30
30
 
31
31
  on b1.column1 > b2.column
32
32
 

4

訂正

2020/09/01 12:31

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -40,7 +40,7 @@
40
40
 
41
41
  on b3.column1 = b4.column1
42
42
 
43
- left join befor b5
43
+ left join before b5
44
44
 
45
45
  on b3.b2_column1 = b5.column1
46
46
 

3

訂正

2020/09/01 12:30

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -42,6 +42,6 @@
42
42
 
43
43
  left join befor b5
44
44
 
45
- on b4.b2_column1 = b5.column1
45
+ on b3.b2_column1 = b5.column1
46
46
 
47
47
  ```

2

訂正

2020/09/01 12:29

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -20,11 +20,9 @@
20
20
 
21
21
  ```SQL
22
22
 
23
- select b3.column1, coalesce(b3.column2, b4.column2) column2
23
+ select b3.column1, coalesce(b4.column2, b5.column2) column2
24
24
 
25
- from befor b3
25
+ from (
26
-
27
- left join (
28
26
 
29
27
  select b1.column1, max(b2.column1) as b2_column1
30
28
 
@@ -36,8 +34,14 @@
36
34
 
37
35
  group by b1.column1
38
36
 
39
- ) b4
37
+ ) b3
38
+
39
+ inner join before b4
40
40
 
41
41
  on b3.column1 = b4.column1
42
42
 
43
+ left join befor b5
44
+
45
+ on b4.b2_column1 = b5.column1
46
+
43
47
  ```

1

追記

2020/09/01 12:29

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -5,3 +5,39 @@
5
5
 
6
6
 
7
7
  並びを特定する項目が無いなら、そのテーブルにオートナンバーを付加したテーブルを準備して追加すると、上手く行けば見た目上の並びでオートナンバーが振られるかもしれません。
8
+
9
+
10
+
11
+ 追記
12
+
13
+ --
14
+
15
+ 未検証です。
16
+
17
+ column1はユニークであることが前提です。
18
+
19
+ 低速な場合はせめてcolumn1のインデックスを作成して下さい。
20
+
21
+ ```SQL
22
+
23
+ select b3.column1, coalesce(b3.column2, b4.column2) column2
24
+
25
+ from befor b3
26
+
27
+ left join (
28
+
29
+ select b1.column1, max(b2.column1) as b2_column1
30
+
31
+ from before b1 left join befor b2
32
+
33
+ on b1.column1 > b2.column
34
+
35
+ and b2.column2 is not null
36
+
37
+ group by b1.column1
38
+
39
+ ) b4
40
+
41
+ on b3.column1 = b4.column1
42
+
43
+ ```