質問編集履歴
3
実行結果の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -160,7 +160,8 @@
|
|
160
160
|
|
161
161
|
### 実行結果
|
162
162
|
|
163
|
+
〇誤
|
163
|
-
実際に更新され
|
164
|
+
実際に更新された情報
|
164
165
|
|契約NO|契約年月日|取消年月日|金額|登録年月日|登録時間|明細NO|
|
165
166
|
|:--|:--:|:--:|:--:|:--:|:--:|--:|
|
166
167
|
|A1|2023/02/15|2023/04/05|3,000|2023/02/15|170000|1|
|
@@ -169,8 +170,8 @@
|
|
169
170
|
|A1|2023/03/15|NULL|3,000|2023/03/15|170000|2|
|
170
171
|
|A1|2023/03/15|2023/04/05|3,000|2023/04/05|170000|2|
|
171
172
|
|
172
|
-
|
173
|
+
〇正
|
173
|
-
更新し
|
174
|
+
本当はこのように更新されてほしい。
|
174
175
|
|契約NO|契約年月日|取消年月日|金額|登録年月日|登録時間|明細NO|
|
175
176
|
|:--|:--:|:--:|:--:|:--:|:--:|--:|
|
176
177
|
|A1|2023/02/15|2023/04/05|3,000|2023/02/15|170000|1|
|
2
初心者マーク、タイトル編集
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2つのテーブルからデータを抽出し、値を更新する
|
1
|
+
2つのテーブルからデータを抽出し、値を更新するSQLを作成したい
|
test
CHANGED
File without changes
|
1
CREATE文、INSERT文の追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -22,6 +22,35 @@
|
|
22
22
|
|A1|2023/03/15|NULL|3,000|2023/03/15|170000|2|
|
23
23
|
|A1|2023/03/15|NULL|3,000|2023/04/05|170000|2|
|
24
24
|
|
25
|
+
```ここに言語を入力
|
26
|
+
CREATE TABLE 実績履歴
|
27
|
+
(
|
28
|
+
契約NO CHAR(20),
|
29
|
+
契約年月日 DATE,
|
30
|
+
取消年月日 DATE,
|
31
|
+
金額 NUMBER(11,0),
|
32
|
+
登録年月日 DATE,
|
33
|
+
登録時間 VARCHAR2(7),
|
34
|
+
明細NO NUMBER(3,0)
|
35
|
+
)
|
36
|
+
/
|
37
|
+
INSERT INTO 実績履歴
|
38
|
+
VALUES ('A1','2023/02/15',NULL,'3000','2023/02/15','170000','1')
|
39
|
+
/
|
40
|
+
INSERT INTO 実績履歴
|
41
|
+
VALUES ('A1','2023/02/15',NULL,'3000','2023/04/05','170000','1')
|
42
|
+
/
|
43
|
+
INSERT INTO 実績履歴
|
44
|
+
VALUES ('A1','2023/02/15',NULL,'3000','2023/04/05','180000','1')
|
45
|
+
/
|
46
|
+
INSERT INTO 実績履歴
|
47
|
+
VALUES ('A1','2023/03/15',NULL,'3000','2023/03/15','170000','2')
|
48
|
+
/
|
49
|
+
INSERT INTO 実績履歴
|
50
|
+
VALUES ('A1','2023/03/15',NULL,'3000','2023/04/05','170000','2')
|
51
|
+
/
|
52
|
+
```
|
53
|
+
|
25
54
|
|
26
55
|
消込履歴テーブル(一部抜粋)
|
27
56
|
|契約NO|契約年月日|取消年月日|金額|明細NO|
|
@@ -30,6 +59,26 @@
|
|
30
59
|
|A1|2023/02/15|2023/04/05|3,000|1|
|
31
60
|
|A1|2023/03/15|2023/04/05|3,000|2|
|
32
61
|
|
62
|
+
```ここに言語を入力
|
63
|
+
CREATE TABLE 取消履歴
|
64
|
+
(
|
65
|
+
契約NO CHAR(20),
|
66
|
+
契約年月日 DATE,
|
67
|
+
取消年月日 DATE,
|
68
|
+
金額 NUMBER(11,0),
|
69
|
+
明細NO NUMBER(3,0)
|
70
|
+
)
|
71
|
+
/
|
72
|
+
INSERT INTO 取消履歴
|
73
|
+
VALUES ('A1','2023/02/15','2023/04/05','3000','1')
|
74
|
+
/
|
75
|
+
INSERT INTO 取消履歴
|
76
|
+
VALUES ('A1','2023/02/15','2023/04/05','3000','1')
|
77
|
+
/
|
78
|
+
INSERT INTO 取消履歴
|
79
|
+
VALUES ('A1','2023/03/15','2023/04/05','3000','2')
|
80
|
+
/
|
81
|
+
```
|
33
82
|
|
34
83
|
|
35
84
|
### 発生している問題
|
@@ -40,30 +89,8 @@
|
|
40
89
|
FORでSELECTを回して更新データを抽出しているのですが
|
41
90
|
W_CNTの指定がおかしいと思われますがどう修正すればいいかわからず詰まってしまっています。
|
42
91
|
|
43
|
-
正しく更新された場合の実績履歴テーブル
|
44
|
-
|契約NO|契約年月日|取消年月日|金額|登録年月日|登録時間|明細NO|
|
45
|
-
|:--|:--:|:--:|:--:|:--:|:--:|--:|
|
46
|
-
|A1|2023/02/15|2023/04/05|3,000|2023/02/15|170000|1|
|
47
|
-
|A1|2023/02/15|2023/04/05|3,000|2023/04/05|170000|1|
|
48
|
-
|A1|2023/02/15|NULL|3,000|2023/04/05|180000|1|
|
49
|
-
|A1|2023/03/15|2023/04/05|3,000|2023/03/15|170000|2|
|
50
|
-
|A1|2023/03/15|NULL|3,000|2023/04/05|170000|2|
|
51
|
-
|
52
|
-
|
53
|
-
実際に更新される実績履歴テーブル
|
54
|
-
|契約NO|契約年月日|取消年月日|金額|登録年月日|登録時間|明細NO|
|
55
|
-
|:--|:--:|:--:|:--:|:--:|:--:|--:|
|
56
|
-
|A1|2023/02/15|2023/04/05|3,000|2023/02/15|170000|1|
|
57
|
-
|A1|2023/02/15|NULL|3,000|2023/04/05|170000|1|
|
58
|
-
|A1|2023/02/15|2023/04/05|3,000|2023/04/05|180000|1|
|
59
|
-
|A1|2023/03/15|NULL|3,000|2023/03/15|170000|2|
|
60
|
-
|A1|2023/03/15|2023/04/05|3,000|2023/04/05|170000|2|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
92
|
> 2. 完全一致の行が複数ある場合、「登録年月日」「登録時間」「明細NO」が小さいものから順に取消年月日を更新。
|
65
|
-
|
66
|
-
小さいものが取得できて
|
93
|
+
小さいものが取得できてません。
|
67
94
|
|
68
95
|
### 該当のソースコード
|
69
96
|
|
@@ -131,13 +158,37 @@
|
|
131
158
|
END LOOP;
|
132
159
|
```
|
133
160
|
|
134
|
-
###
|
161
|
+
### 実行結果
|
162
|
+
|
163
|
+
実際に更新される実績履歴テーブル
|
164
|
+
|契約NO|契約年月日|取消年月日|金額|登録年月日|登録時間|明細NO|
|
165
|
+
|:--|:--:|:--:|:--:|:--:|:--:|--:|
|
166
|
+
|A1|2023/02/15|2023/04/05|3,000|2023/02/15|170000|1|
|
167
|
+
|A1|2023/02/15|NULL|3,000|2023/04/05|170000|1|
|
168
|
+
|A1|2023/02/15|2023/04/05|3,000|2023/04/05|180000|1|
|
169
|
+
|A1|2023/03/15|NULL|3,000|2023/03/15|170000|2|
|
170
|
+
|A1|2023/03/15|2023/04/05|3,000|2023/04/05|170000|2|
|
171
|
+
|
172
|
+
|
173
|
+
更新したい実績履歴テーブル
|
174
|
+
|契約NO|契約年月日|取消年月日|金額|登録年月日|登録時間|明細NO|
|
175
|
+
|:--|:--:|:--:|:--:|:--:|:--:|--:|
|
176
|
+
|A1|2023/02/15|2023/04/05|3,000|2023/02/15|170000|1|
|
177
|
+
|A1|2023/02/15|2023/04/05|3,000|2023/04/05|170000|1|
|
178
|
+
|A1|2023/02/15|NULL|3,000|2023/04/05|180000|1|
|
179
|
+
|A1|2023/03/15|2023/04/05|3,000|2023/03/15|170000|2|
|
180
|
+
|A1|2023/03/15|NULL|3,000|2023/04/05|170000|2|
|
181
|
+
|
182
|
+
|
183
|
+
### 調査したこと、試したこと
|
135
184
|
|
136
185
|
①W_CNT の指定方法をどうにかする必要あり。
|
137
186
|
|
138
187
|
②partition byを利用したら上手くいくかも?
|
139
188
|
|
140
189
|
> ROW_NUMBER() OVER(ORDER BY 実績.登録年月日 ASC, 実績.登録時間 ASC, 実績.明細NO ASC ) AS 順番
|
190
|
+
|
191
|
+
|
141
192
|
|
142
193
|
---
|
143
194
|
|