teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

6

訂正

2021/04/24 13:53

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -26,6 +26,6 @@
26
26
  for i in 1..(wr.測定間隔日数 / 7) loop
27
27
  -- insert 処理
28
28
  end loop;
29
- loop end;
29
+ end loop;
30
30
  END;
31
31
  ```

5

追記

2021/04/24 13:53

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -12,4 +12,20 @@
12
12
  [Level擬似列](https://www.oracle.com/jp/technical-resources/article/set-of-sql-oracle-database-imaged.html)
13
13
  [OracleでのPostgreSQLの「generate_series」(連続値の生成関数)的な使い方(LEVEL疑似列)](http://rnk.mitelog.jp/oyaji/2016/03/oraclepostgresq-cd15.html)
14
14
 
15
- 細々な編集があって追加時の値の判断が難しいなら、日付だけ追加した後に更新するなどすれば良いかと思いますが、それならいっそ、[無名ブロック](http://oracle.se-free.com/plsql/d1_block.html)で順次読み出しして追加する方が良い気がします。
15
+ 細々な編集があって追加時の値の判断が難しいなら、日付だけ追加した後に更新するなどすれば良いかと思いますが、それならいっそ、[無名ブロック](http://oracle.se-free.com/plsql/d1_block.html)で順次読み出しして追加する方が良い気がします。
16
+ ```SQL
17
+ -- 無名ブロック
18
+ DECLARE
19
+ wr record;
20
+ BEGIN
21
+ for wr in (
22
+ select tbl.*
23
+ , to_date(lead(測定日) over(order by 測定日), 'yyyymmdd') - to_date(測定日, 'yyyymmdd') as 測定間隔日数
24
+ from テーブル tbl order by 測定日
25
+ ) loop
26
+ for i in 1..(wr.測定間隔日数 / 7) loop
27
+ -- insert 処理
28
+ end loop;
29
+ loop end;
30
+ END;
31
+ ```

4

推敲

2021/04/24 13:50

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -12,4 +12,4 @@
12
12
  [Level擬似列](https://www.oracle.com/jp/technical-resources/article/set-of-sql-oracle-database-imaged.html)
13
13
  [OracleでのPostgreSQLの「generate_series」(連続値の生成関数)的な使い方(LEVEL疑似列)](http://rnk.mitelog.jp/oyaji/2016/03/oraclepostgresq-cd15.html)
14
14
 
15
- 細々な編集があって追加時の判断が難しいなら、日付だけ追加した後に更新するなどすれば良いかと思いますが、それならいっそ、[無名ブロック](http://oracle.se-free.com/plsql/d1_block.html)で順次読み出しして追加する方が良い気がします。
15
+ 細々な編集があって追加時の値の判断が難しいなら、日付だけ追加した後に更新するなどすれば良いかと思いますが、それならいっそ、[無名ブロック](http://oracle.se-free.com/plsql/d1_block.html)で順次読み出しして追加する方が良い気がします。

3

追記

2021/04/24 05:49

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -12,4 +12,4 @@
12
12
  [Level擬似列](https://www.oracle.com/jp/technical-resources/article/set-of-sql-oracle-database-imaged.html)
13
13
  [OracleでのPostgreSQLの「generate_series」(連続値の生成関数)的な使い方(LEVEL疑似列)](http://rnk.mitelog.jp/oyaji/2016/03/oraclepostgresq-cd15.html)
14
14
 
15
- 細々な編集があって追加時の判断が難しいなら、日付だけ追加した後に更新するなどすれば良いかと思います。
15
+ 細々な編集があって追加時の判断が難しいなら、日付だけ追加した後に更新するなどすれば良いかと思いますが、それならいっそ、[無名ブロック](http://oracle.se-free.com/plsql/d1_block.html)で順次読み出しして追加する方が良い気がします

2

推敲

2021/04/24 05:41

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -12,4 +12,4 @@
12
12
  [Level擬似列](https://www.oracle.com/jp/technical-resources/article/set-of-sql-oracle-database-imaged.html)
13
13
  [OracleでのPostgreSQLの「generate_series」(連続値の生成関数)的な使い方(LEVEL疑似列)](http://rnk.mitelog.jp/oyaji/2016/03/oraclepostgresq-cd15.html)
14
14
 
15
- こまごまな編集があって追加時の判断が難しいなら、日付だけ追加した後にWindow関数(lag()とlead()とか)を使用して更新するなどすれば良いかと思います。
15
+ 細々な編集があって追加時の判断が難しいなら、日付だけ追加した後に更新するなどすれば良いかと思います。

1

追記

2021/04/24 05:36

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -10,4 +10,6 @@
10
10
  ```
11
11
  カレンダーは実際のテーブルでも良いですし、`CONNECT BY LEVEL`を用いて仮想表を生成してもいいでしょう。
12
12
  [Level擬似列](https://www.oracle.com/jp/technical-resources/article/set-of-sql-oracle-database-imaged.html)
13
- [OracleでのPostgreSQLの「generate_series」(連続値の生成関数)的な使い方(LEVEL疑似列)](http://rnk.mitelog.jp/oyaji/2016/03/oraclepostgresq-cd15.html)
13
+ [OracleでのPostgreSQLの「generate_series」(連続値の生成関数)的な使い方(LEVEL疑似列)](http://rnk.mitelog.jp/oyaji/2016/03/oraclepostgresq-cd15.html)
14
+
15
+ こまごまな編集があって追加時の判断が難しいなら、日付だけ追加した後にWindow関数(lag()とlead()とか)を使用して更新するなどすれば良いかと思います。