回答編集履歴
5
変更
test
CHANGED
@@ -88,9 +88,21 @@
|
|
88
88
|
|
89
89
|
一度には無理そうなのでまずは+2しなくても良い2個以上対応バージョンです。
|
90
90
|
|
91
|
-
・
|
91
|
+
・前提
|
92
92
|
|
93
|
+
shouhin_tableには数個の商品が有り、IDが並んでいるを前提としています。さらにshouhin_table自身に展開します。
|
93
94
|
|
95
|
+
・概要
|
96
|
+
|
97
|
+
shouhin_tableに有るレコードを100倍して、更に日付倍しています。
|
98
|
+
|
99
|
+
RECURSIVEを使いcreated日付が指定日になるまでループし追加しています。
|
100
|
+
|
101
|
+
GENERATE_SERIES(0,99)によりcategoryの1~100を作成しています。
|
102
|
+
|
103
|
+
インサート前にshouhin_tableを全件削除しています。
|
104
|
+
|
105
|
+
念のためcategoryが'0100'以上をインサート対象外としています。
|
94
106
|
|
95
107
|
```sql
|
96
108
|
|
@@ -108,7 +120,7 @@
|
|
108
120
|
|
109
121
|
), q AS (delete from shouhin_table returning *)
|
110
122
|
|
111
|
-
INSERT INTO shouhin_table SELECT ROW_NUMBER() OVER (), item_cd, category, name, created FROM r
|
123
|
+
INSERT INTO shouhin_table SELECT ROW_NUMBER() OVER (), item_cd, category, name, created FROM r where category::int<=100
|
112
124
|
|
113
125
|
;
|
114
126
|
|
4
変更
test
CHANGED
@@ -86,9 +86,11 @@
|
|
86
86
|
|
87
87
|
|
88
88
|
|
89
|
-
一度には無理そうなのでまずは+2しなくても良いバージョン
|
89
|
+
一度には無理そうなのでまずは+2しなくても良い2個以上対応バージョンです。
|
90
90
|
|
91
|
-
・shouhin_tableには数個の商品が
|
91
|
+
・shouhin_tableには数個の商品が有り、IDが並んでいるを前提としています。さらにshouhin_table自身に展開します。
|
92
|
+
|
93
|
+
|
92
94
|
|
93
95
|
```sql
|
94
96
|
|
@@ -112,6 +114,8 @@
|
|
112
114
|
|
113
115
|
```
|
114
116
|
|
117
|
+
※テーブルqを作成していますが、後でINSERT時に使う予定
|
115
118
|
|
116
119
|
|
117
120
|
|
121
|
+
|
3
追加
test
CHANGED
@@ -85,3 +85,33 @@
|
|
85
85
|
```
|
86
86
|
|
87
87
|
|
88
|
+
|
89
|
+
一度には無理そうなのでまずは+2しなくても良いバージョン
|
90
|
+
|
91
|
+
・shouhin_tableには数個の商品がありIDが並んでいる場合でshouhin_table自身に展開する。
|
92
|
+
|
93
|
+
```sql
|
94
|
+
|
95
|
+
WITH RECURSIVE r AS (
|
96
|
+
|
97
|
+
SELECT * FROM (
|
98
|
+
|
99
|
+
SELECT id,item_cd,to_char(category::int+n,'0000') category,name,created from shouhin_table,
|
100
|
+
|
101
|
+
GENERATE_SERIES(0,99) n) t1
|
102
|
+
|
103
|
+
UNION ALL
|
104
|
+
|
105
|
+
SELECT id, item_cd,category,name,created + '1 day' FROM r WHERE created::date < '2020/03/31'
|
106
|
+
|
107
|
+
), q AS (delete from shouhin_table returning *)
|
108
|
+
|
109
|
+
INSERT INTO shouhin_table SELECT ROW_NUMBER() OVER (), item_cd, category, name, created FROM r
|
110
|
+
|
111
|
+
;
|
112
|
+
|
113
|
+
```
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
|
2
変更
test
CHANGED
@@ -53,3 +53,35 @@
|
|
53
53
|
|
54
54
|
|
55
55
|
```
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
読込が足りず失礼いたしました。(変更)
|
60
|
+
|
61
|
+
```sql
|
62
|
+
|
63
|
+
INSERT INTO shouhin_table
|
64
|
+
|
65
|
+
SELECT ROW_NUMBER() OVER (), item_cd, category, name, created FROM (
|
66
|
+
|
67
|
+
WITH RECURSIVE r AS (
|
68
|
+
|
69
|
+
SELECT * FROM (
|
70
|
+
|
71
|
+
SELECT id,item_cd,to_char(category::int+n,'0000') category,name,created from table_t, GENERATE_SERIES(0,99) n
|
72
|
+
|
73
|
+
) t1 WHERE id in (1,2)
|
74
|
+
|
75
|
+
UNION ALL
|
76
|
+
|
77
|
+
SELECT id, item_cd,category,name,created + '1 day' FROM r WHERE created::date < '2020/03/31'
|
78
|
+
|
79
|
+
)
|
80
|
+
|
81
|
+
SELECT * FROM r
|
82
|
+
|
83
|
+
) tx where category::int<=100;
|
84
|
+
|
85
|
+
```
|
86
|
+
|
87
|
+
|
1
変更
test
CHANGED
@@ -44,9 +44,11 @@
|
|
44
44
|
|
45
45
|
|
46
46
|
|
47
|
-
|
47
|
+
categoryが'0100'になるまででしたので調整
|
48
48
|
|
49
|
-
insert into hoge_tbl select * from (WITH ..... SELECT * FROM r) tx;
|
49
|
+
insert into hoge_tbl select * from (WITH ..... SELECT * FROM r) tx where category::int<=100;
|
50
|
+
|
51
|
+
|
50
52
|
|
51
53
|
|
52
54
|
|