質問編集履歴
3
文言の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -8,11 +8,29 @@
|
|
8
8
|
|
9
9
|
休暇情報が入ったテーブルから休暇行使日を取得した休暇別に取得したいです。
|
10
10
|
|
11
|
-
|
11
|
+
加えて、上詰めで表示で来てたら尚うれしいです。
|
12
|
+
|
12
|
-
|
13
|
+
最悪上詰めで無くてもよいです。
|
14
|
+
|
15
|
+
|
16
|
+
|
13
|
-
|
17
|
+
【発生している問題点】
|
18
|
+
|
14
|
-
|
19
|
+
・本来は入っていない重複したデータが取得されてしまいます。
|
20
|
+
|
21
|
+
実際に取得されたイメージを下に掲載いたしました。
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
【テーブルの構成】
|
28
|
+
|
29
|
+
「person」
|
30
|
+
|
31
|
+
|
32
|
+
|
15
|
-
・人情報が入っているテーブル=「
|
33
|
+
・人情報が入っているテーブル=「person」のカラムはそれぞれ、
|
16
34
|
|
17
35
|
person_id int primary key
|
18
36
|
|
@@ -42,7 +60,11 @@
|
|
42
60
|
|
43
61
|
|
44
62
|
|
63
|
+
「holiday」
|
64
|
+
|
65
|
+
|
66
|
+
|
45
|
-
・休暇の取得情報が入っているテーブル=「
|
67
|
+
・休暇の取得情報が入っているテーブル=「holiday」のカラムはそれぞれ、
|
46
68
|
|
47
69
|
holiday_id int primary key
|
48
70
|
|
@@ -134,7 +156,7 @@
|
|
134
156
|
|
135
157
|
|
136
158
|
|
137
|
-
太字の個所のように、
|
159
|
+
太字の個所のように、本来はない重複データが取得されてしまいます。
|
138
160
|
|
139
161
|
原因もさっぱりわからず、これを実現するためにどのようにネットでサーチしたらよいかもさっぱりでして、
|
140
162
|
|
@@ -258,10 +280,6 @@
|
|
258
280
|
|
259
281
|
|
260
282
|
|
261
|
-
前回同様文章が拙いものとなってしまい、伝わりづらいかもしれませんが、お分かりになられる方何卒よろしくお願い申し上げます。
|
262
|
-
|
263
|
-
|
264
|
-
|
265
283
|
データが問題が起きている現場のものと一緒でない為、もしかするとここに書いた情報だけでは特定できないということもあるかもしれませんが、可能性だけでもご教授いただけたら大変ありがたいです。
|
266
284
|
|
267
285
|
|
2
とりいそぎデータの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,40 +2,16 @@
|
|
2
2
|
|
3
3
|
お疲れ様です。
|
4
4
|
|
5
|
-
|
5
|
+
|
6
|
-
|
7
|
-
https://teratail.com/questions/301870
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
前回回答していただいて一旦解決したのですが、テーブルに入っているデータによってうまく集計できない(希望通りにならない)
|
12
|
-
|
13
|
-
場面が出てくることに気が付きました。
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
どういう現象が起こるかというと、実際のテーブルにないデータが抽出されてきます。
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
まず前回の内容と重複する部分もあるのですが、初めてこちらから見ていただいている方もいらっしゃると思うので
|
22
|
-
|
23
|
-
ある程度再掲させてください。
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
長文になりますことを先にお詫びいたします。
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
【実現したいこと】
|
32
|
-
|
33
|
-
|
34
6
|
|
35
7
|
■人情報が入っているテーブルからその人名と、その人が休暇を取得した場合に、
|
36
8
|
|
37
9
|
休暇情報が入ったテーブルから休暇行使日を取得した休暇別に取得したいです。
|
38
10
|
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
|
39
15
|
・人情報が入っているテーブル=「PERSON」のカラムはそれぞれ、
|
40
16
|
|
41
17
|
person_id int primary key
|
@@ -64,6 +40,8 @@
|
|
64
40
|
|
65
41
|
とします。
|
66
42
|
|
43
|
+
|
44
|
+
|
67
45
|
・休暇の取得情報が入っているテーブル=「HOLIDAY」のカラムはそれぞれ、
|
68
46
|
|
69
47
|
holiday_id int primary key
|
@@ -78,7 +56,9 @@
|
|
78
56
|
|
79
57
|
で、
|
80
58
|
|
59
|
+
|
60
|
+
|
81
|
-
|
61
|
+
今回問題が発生したデータが以下、
|
82
62
|
|
83
63
|
|holiday_id|person_code|holiday_code|holiday_name|used_date|
|
84
64
|
|
@@ -86,107 +66,71 @@
|
|
86
66
|
|
87
67
|
|1|001|1000|代休|2020/10/01|
|
88
68
|
|
69
|
+
|1|001|1000|代休|2020/10/02|
|
70
|
+
|
89
|
-
|1|001|2000|有給|2020/10/0
|
71
|
+
|1|001|2000|有給|2020/10/03|
|
90
|
-
|
72
|
+
|
91
|
-
|1|001|1000|
|
73
|
+
|1|001|1000|怪我病欠|2020/10/04|
|
92
|
-
|
74
|
+
|
93
|
-
|2|002|2000|有給|2020/10/0
|
75
|
+
|2|002|2000|有給|2020/10/01|
|
76
|
+
|
77
|
+
|2|002|1000|代休|2020/10/03|
|
94
78
|
|
95
79
|
|2|002|1000|代休|2020/10/05|
|
96
80
|
|
97
|
-
|3|003|3000|怪我病欠|2020/10/0
|
81
|
+
|3|003|3000|怪我病欠|2020/10/03|
|
98
|
-
|
82
|
+
|
99
|
-
|3|003|3000|怪我病欠|2020/10/0
|
83
|
+
|3|003|3000|怪我病欠|2020/10/04|
|
100
|
-
|
84
|
+
|
101
|
-
|3|003|3000|怪我病欠|2020/10/0
|
85
|
+
|3|003|3000|怪我病欠|2020/10/05|
|
102
|
-
|
103
|
-
|
104
|
-
|
86
|
+
|
87
|
+
|
88
|
+
|
105
|
-
と
|
89
|
+
とします。
|
106
|
-
|
90
|
+
|
91
|
+
|
92
|
+
|
107
|
-
|
93
|
+
これら二つのテーブルを、取得したい休暇情報分自己結合したのち、以下のようなイメージでデータを取得したいと考えております。
|
94
|
+
|
95
|
+
|person_name|代休|有休|怪我病欠|
|
108
96
|
|
109
97
|
|:--:|:--:|:--:|:--:|
|
110
98
|
|
99
|
+
|A|2020/10/01|2020/10/03|2020/10/04|
|
100
|
+
|
101
|
+
|A|2020/10/02|null|null|
|
102
|
+
|
111
|
-
|
|
103
|
+
|B|2020/10/03|2020/10/01|null|
|
112
|
-
|
113
|
-
|
104
|
+
|
114
|
-
|
115
|
-
|1|001|2000|有給|2020/10/02|
|
116
|
-
|
117
|
-
|1|001|1000|代休|2020/10/03|
|
118
|
-
|
119
|
-
|
|
105
|
+
|B|2020/10/04|null|null|
|
120
|
-
|
121
|
-
|
106
|
+
|
122
|
-
|
123
|
-
|
|
107
|
+
|C|null|null|2020/10/06|
|
124
|
-
|
108
|
+
|
125
|
-
|
|
109
|
+
|C|null|null|2020/10/07|
|
126
|
-
|
110
|
+
|
127
|
-
|
|
111
|
+
|C|null|null|2020/10/08|
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
112
|
+
|
132
|
-
|
113
|
+
|
114
|
+
|
133
|
-
|
115
|
+
しかし実際に出てきたデータがこちら
|
134
|
-
|
135
|
-
データ数があまりに多いことと、現場のデータなのでこちらに書くわけにもいかずでして、、、
|
136
|
-
|
137
|
-
一旦前提条件の話を続けます。
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
これら二つのテーブルを、取得したい休暇情報分自己結合したのち、以下のようなイメージでデータを取得したいと考えております。
|
142
116
|
|
143
117
|
|person_name|代休|有休|怪我病欠|
|
144
118
|
|
145
119
|
|:--:|:--:|:--:|:--:|
|
146
120
|
|
121
|
+
|A|2020/10/01|2020/10/03|2020/10/04|
|
122
|
+
|
123
|
+
|A|2020/10/02|**2020/10/03**|**2020/10/04**|
|
124
|
+
|
147
|
-
|
|
125
|
+
|B|2020/10/03|2020/10/01|null|
|
148
|
-
|
149
|
-
|
126
|
+
|
150
|
-
|
151
|
-
|A|null|null|null|
|
152
|
-
|
153
|
-
|A|2020/10/03|null|null|
|
154
|
-
|
155
|
-
|B|
|
127
|
+
|B|2020/10/04|**2020/10/01**|null|
|
156
|
-
|
157
|
-
|
128
|
+
|
158
|
-
|
159
|
-
|C|null|null|2020/10/0
|
129
|
+
|C|null|null|2020/10/03|
|
160
|
-
|
130
|
+
|
161
|
-
|C|null|null|2020/10/0
|
131
|
+
|C|null|null|2020/10/04|
|
162
|
-
|
132
|
+
|
163
|
-
|C|null|null|2020/10/0
|
133
|
+
|C|null|null|2020/10/05|
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
しかし実際に出てきたデータがこちら
|
168
|
-
|
169
|
-
|person_name|代休|有休|怪我病欠|
|
170
|
-
|
171
|
-
|:--:|:--:|:--:|:--:|
|
172
|
-
|
173
|
-
|A|2020/10/01|2020/10/02|null|
|
174
|
-
|
175
|
-
|A|2020/10/02|**2020/10/02**|null|
|
176
|
-
|
177
|
-
|A|null|null|null|
|
178
|
-
|
179
|
-
|A|2020/10/03|null|null|
|
180
|
-
|
181
|
-
|B|null|2020/10/04|null|
|
182
|
-
|
183
|
-
|B|2020/10/05|null|null|
|
184
|
-
|
185
|
-
|C|null|null|2020/10/06|
|
186
|
-
|
187
|
-
|C|null|null|2020/10/07|
|
188
|
-
|
189
|
-
|C|null|null|2020/10/08|
|
190
134
|
|
191
135
|
|
192
136
|
|
1
コードの部分がトリプルバッククォートで挟まれていなかったので修正しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -202,6 +202,8 @@
|
|
202
202
|
|
203
203
|
前回の質問の時に教えていただいた、下のクエリで集計いたしました。
|
204
204
|
|
205
|
+
```
|
206
|
+
|
205
207
|
SELECT p.person_name
|
206
208
|
|
207
209
|
, h1.used_date 代休, h2.used_date 有給, h3.used_date 怪我病欠
|
@@ -226,7 +228,7 @@
|
|
226
228
|
|
227
229
|
and p.person_code = h3.person_code
|
228
230
|
|
229
|
-
|
231
|
+
```
|
230
232
|
|
231
233
|
その時に、クロス集計することになるだろうとはおっしゃっていただいたのですが、
|
232
234
|
|