質問編集履歴
13
不要文削除
test
CHANGED
File without changes
|
test
CHANGED
@@ -116,8 +116,6 @@
|
|
116
116
|
|
117
117
|
status2の数が1個以上のときはstatus2を表示、ということを想定しています。
|
118
118
|
|
119
|
-
status3がKJ_CODE(1234)の数
|
120
|
-
|
121
119
|
|
122
120
|
|
123
121
|
### 発生している問題
|
12
タグの追加
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|
11
誤字脱字修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -17,6 +17,8 @@
|
|
17
17
|
ユーザーID
|
18
18
|
|
19
19
|
KJコード
|
20
|
+
|
21
|
+
PGコード
|
20
22
|
|
21
23
|
ステータスコード
|
22
24
|
|
10
サンプルのテーブル項目が足りなかったため一つ追加しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -32,6 +32,8 @@
|
|
32
32
|
|
33
33
|
,KJ_CODE NUMBER
|
34
34
|
|
35
|
+
,PG_CODE NUMBER
|
36
|
+
|
35
37
|
,STATUS_CODE NUMBER
|
36
38
|
|
37
39
|
);
|
@@ -46,29 +48,29 @@
|
|
46
48
|
|
47
49
|
```SQL
|
48
50
|
|
49
|
-
INSERT INTO TEST(USER_ID, KJ_CODE,
|
51
|
+
INSERT INTO TEST(USER_ID, KJ_CODE,PG_CODE,STATUS_CODE ) VALUES ('0010',1234,1111,1) ;
|
50
52
|
|
51
|
-
INSERT INTO TEST(USER_ID, KJ_CODE,
|
53
|
+
INSERT INTO TEST(USER_ID, KJ_CODE,PG_CODE,STATUS_CODE ) VALUES ('0010',1234,1112,2) ;
|
52
54
|
|
53
|
-
INSERT INTO TEST(USER_ID, KJ_CODE,
|
55
|
+
INSERT INTO TEST(USER_ID, KJ_CODE,PG_CODE,STATUS_CODE ) VALUES ('0010',1234,1113,3) ;
|
54
56
|
|
55
|
-
INSERT INTO TEST(USER_ID, KJ_CODE,
|
57
|
+
INSERT INTO TEST(USER_ID, KJ_CODE,PG_CODE,STATUS_CODE ) VALUES ('0010',1234,1114,4) ;
|
56
58
|
|
57
|
-
INSERT INTO TEST(USER_ID, KJ_CODE,
|
59
|
+
INSERT INTO TEST(USER_ID, KJ_CODE,PG_CODE,STATUS_CODE ) VALUES ('0010',1234,1115,1) ;
|
58
60
|
|
59
|
-
INSERT INTO TEST(USER_ID, KJ_CODE,
|
61
|
+
INSERT INTO TEST(USER_ID, KJ_CODE,PG_CODE,STATUS_CODE ) VALUES ('0010',1234,1116,1) ;
|
60
62
|
|
61
|
-
INSERT INTO TEST(USER_ID, KJ_CODE,
|
63
|
+
INSERT INTO TEST(USER_ID, KJ_CODE,PG_CODE,STATUS_CODE ) VALUES ('0010',1234,1117,2) ;
|
62
64
|
|
63
|
-
INSERT INTO TEST(USER_ID, KJ_CODE,
|
65
|
+
INSERT INTO TEST(USER_ID, KJ_CODE,PG_CODE,STATUS_CODE ) VALUES ('0010',4321,1111,1) ;
|
64
66
|
|
65
|
-
INSERT INTO TEST(USER_ID, KJ_CODE,
|
67
|
+
INSERT INTO TEST(USER_ID, KJ_CODE,PG_CODE,STATUS_CODE ) VALUES ('0010',4321,1112,1) ;
|
66
68
|
|
67
|
-
INSERT INTO TEST(USER_ID, KJ_CODE,
|
69
|
+
INSERT INTO TEST(USER_ID, KJ_CODE,PG_CODE,STATUS_CODE ) VALUES ('0010',4321,1113,2) ;
|
68
70
|
|
69
|
-
INSERT INTO TEST(USER_ID, KJ_CODE,
|
71
|
+
INSERT INTO TEST(USER_ID, KJ_CODE,PG_CODE,STATUS_CODE ) VALUES ('0010',4321,1114,2) ;
|
70
72
|
|
71
|
-
INSERT INTO TEST(USER_ID, KJ_CODE,
|
73
|
+
INSERT INTO TEST(USER_ID, KJ_CODE,PG_CODE,STATUS_CODE ) VALUES ('0010',4321,1115,3) ;
|
72
74
|
|
73
75
|
```
|
74
76
|
|
@@ -76,23 +78,23 @@
|
|
76
78
|
|
77
79
|
|
78
80
|
|
79
|
-
そして、KJコードをGROUP BYで集約しつつ
|
81
|
+
そして、KJコードをGROUP BYで集約しつつPG_CODEをCOUNTした合計数と、
|
80
82
|
|
81
83
|
ステータスコード1~4のそれぞれのCOUNTした数をだし、
|
82
84
|
|
83
|
-
ステータスコード1~4それぞれのCOUNTした数と
|
85
|
+
ステータスコード1~4それぞれのCOUNTした数とPG_CODEをCOUNTした数、
|
84
86
|
|
85
87
|
あるいはステータスコードの合計を例えば下記のように比較します。
|
86
88
|
|
87
89
|
|
88
90
|
|
89
|
-
ステータスコードの値1の合計数 >
|
91
|
+
ステータスコードの値1の合計数 > PG_CODEの合計数
|
90
92
|
|
91
93
|
ステータスコードの値1の合計数 < ステータスコードの値2の合計数
|
92
94
|
|
93
95
|
ステータスコードの値3の合計数 > 0
|
94
96
|
|
95
|
-
ステータスコードの値4の合計数 <
|
97
|
+
ステータスコードの値4の合計数 < PG_CODEの合計数
|
96
98
|
|
97
99
|
|
98
100
|
|
@@ -104,9 +106,15 @@
|
|
104
106
|
|
105
107
|
|
106
108
|
|
107
|
-
|
109
|
+
KJ_CODEごとにSTATUS_CODE の一番数が多いもの、あるいは1個以上ある場合など
|
108
110
|
|
111
|
+
例えば、サンプルデータでKJ_CODEが1234のとき、
|
112
|
+
|
109
|
-
KJ_CODE
|
113
|
+
status1の数が KJ_CODE(1234)のPG_CODE数より大きいとstatus1を表示
|
114
|
+
|
115
|
+
status2の数が1個以上のときはstatus2を表示、ということを想定しています。
|
116
|
+
|
117
|
+
status3がKJ_CODE(1234)の数
|
110
118
|
|
111
119
|
|
112
120
|
|
@@ -134,7 +142,7 @@
|
|
134
142
|
|
135
143
|
,KJ_CODE
|
136
144
|
|
137
|
-
,COUNT(
|
145
|
+
,COUNT(PG_CODE)
|
138
146
|
|
139
147
|
,COUNT(STATUS_CODE)
|
140
148
|
|
9
誤字脱字変更。
test
CHANGED
File without changes
|
test
CHANGED
@@ -104,7 +104,9 @@
|
|
104
104
|
|
105
105
|
|
106
106
|
|
107
|
+
想定は、KJ_CODEが仮に二種類あると二件のデータが取得される想定です。
|
107
108
|
|
109
|
+
KJ_CODEごとにSTATUS_CODE の一番数が多いものを取得する想定です。
|
108
110
|
|
109
111
|
|
110
112
|
|
8
余計な文を削除
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,11 +1,3 @@
|
|
1
|
-
初めまして。初投稿となります。
|
2
|
-
|
3
|
-
不慣れな部分もありますが、なにとぞ皆様のお力をお借りできればと思いますので、
|
4
|
-
|
5
|
-
大変お手数ですが、ご回答のほどよろしくお願いいたします。
|
6
|
-
|
7
|
-
|
8
|
-
|
9
1
|
データベースの環境はOracle 11gとなります。
|
10
2
|
|
11
3
|
|
7
誤字脱字変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -136,20 +136,20 @@
|
|
136
136
|
|
137
137
|
SELECT
|
138
138
|
|
139
|
-
|
139
|
+
,USER_ID
|
140
140
|
|
141
|
-
,KJ
|
141
|
+
,KJ_CODE
|
142
142
|
|
143
|
-
,COUNT(KJ
|
143
|
+
,COUNT(KJ_CODE)
|
144
144
|
|
145
|
-
,COUNT(
|
145
|
+
,COUNT(STATUS_CODE)
|
146
146
|
|
147
147
|
FROM
|
148
148
|
|
149
|
-
|
149
|
+
TEST
|
150
150
|
|
151
151
|
GROUP BY
|
152
152
|
|
153
|
-
KJ
|
153
|
+
KJ_CODE
|
154
154
|
|
155
155
|
```
|
6
コードスニペットの追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -30,9 +30,59 @@
|
|
30
30
|
|
31
31
|
..................
|
32
32
|
|
33
|
+
```SQL
|
34
|
+
|
35
|
+
CREATE TABLE TEST
|
36
|
+
|
37
|
+
(
|
38
|
+
|
39
|
+
USER_ID VARCHAR(10)
|
40
|
+
|
41
|
+
,KJ_CODE NUMBER
|
42
|
+
|
43
|
+
,STATUS_CODE NUMBER
|
44
|
+
|
45
|
+
);
|
46
|
+
|
47
|
+
```
|
48
|
+
|
49
|
+
|
50
|
+
|
33
51
|
|
34
52
|
|
35
53
|
このとき、ステータスコードには1~4のコードが登録されています。
|
54
|
+
|
55
|
+
```SQL
|
56
|
+
|
57
|
+
INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 1234,1) ;
|
58
|
+
|
59
|
+
INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 1234,2) ;
|
60
|
+
|
61
|
+
INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 1234,3) ;
|
62
|
+
|
63
|
+
INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 1234,4) ;
|
64
|
+
|
65
|
+
INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 1234,2) ;
|
66
|
+
|
67
|
+
INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 1234,3) ;
|
68
|
+
|
69
|
+
INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 1234,1) ;
|
70
|
+
|
71
|
+
INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 4321,1) ;
|
72
|
+
|
73
|
+
INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 4321,1) ;
|
74
|
+
|
75
|
+
INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 4321,2) ;
|
76
|
+
|
77
|
+
INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 4321,3) ;
|
78
|
+
|
79
|
+
INSERT INTO TEST(USER_ID, KJ_CODE, STATUS_CODE ) VALUES ('0010', 4321,2) ;
|
80
|
+
|
81
|
+
```
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
|
36
86
|
|
37
87
|
そして、KJコードをGROUP BYで集約しつつKJコードをCOUNTした数と、
|
38
88
|
|
5
誤字脱字変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -38,9 +38,9 @@
|
|
38
38
|
|
39
39
|
ステータスコード1~4のそれぞれのCOUNTした数をだし、
|
40
40
|
|
41
|
-
ステータスコード1~4それぞれのCOUNTした数とKJコードをCOUNTした数、
|
41
|
+
ステータスコード1~4それぞれのCOUNTした数とKJコードをCOUNTした数、
|
42
42
|
|
43
|
-
例えば下記のように比較します。
|
43
|
+
あるいはステータスコードの合計を例えば下記のように比較します。
|
44
44
|
|
45
45
|
|
46
46
|
|
@@ -70,9 +70,9 @@
|
|
70
70
|
|
71
71
|
|
72
72
|
|
73
|
-
初歩的で申し訳ありませんが、一つのテーブルでGROUP BYしつつ
|
73
|
+
初歩的で申し訳ありませんが、一つのテーブルでGROUP BYしつつ、
|
74
74
|
|
75
|
-
よくわかっていません。
|
75
|
+
上記のように二つの列をカウントするような記述がよくわかっていません。
|
76
76
|
|
77
77
|
こういった場合は、やはり同一テーブルを副問い合わせなどするのでしょうか。
|
78
78
|
|
4
コードスニペットの追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -34,9 +34,7 @@
|
|
34
34
|
|
35
35
|
このとき、ステータスコードには1~4のコードが登録されています。
|
36
36
|
|
37
|
-
そして、KJコードをGROUP BYで集約しつつ
|
37
|
+
そして、KJコードをGROUP BYで集約しつつKJコードをCOUNTした数と、
|
38
|
-
|
39
|
-
KJコードをCOUNTした数と、
|
40
38
|
|
41
39
|
ステータスコード1~4のそれぞれのCOUNTした数をだし、
|
42
40
|
|
@@ -84,17 +82,17 @@
|
|
84
82
|
|
85
83
|
現在私自身は、下記のようなSQLの記述状況で手間取ってしまっています。
|
86
84
|
|
87
|
-
|
85
|
+
```SQL
|
88
86
|
|
89
87
|
SELECT
|
90
88
|
|
91
89
|
ユーザーID
|
92
90
|
|
93
|
-
KJコード
|
91
|
+
,KJコード
|
94
92
|
|
95
|
-
COUNT(KJコード)
|
93
|
+
,COUNT(KJコード)
|
96
94
|
|
97
|
-
COUNT(ステータスコード)
|
95
|
+
,COUNT(ステータスコード)
|
98
96
|
|
99
97
|
FROM
|
100
98
|
|
@@ -103,3 +101,5 @@
|
|
103
101
|
GROUP BY
|
104
102
|
|
105
103
|
KJコード
|
104
|
+
|
105
|
+
```
|
3
環境、現状の状況追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -3,6 +3,10 @@
|
|
3
3
|
不慣れな部分もありますが、なにとぞ皆様のお力をお借りできればと思いますので、
|
4
4
|
|
5
5
|
大変お手数ですが、ご回答のほどよろしくお願いいたします。
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
データベースの環境はOracle 11gとなります。
|
6
10
|
|
7
11
|
|
8
12
|
|
@@ -60,6 +64,10 @@
|
|
60
64
|
|
61
65
|
|
62
66
|
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
|
63
71
|
### 発生している問題
|
64
72
|
|
65
73
|
|
@@ -71,3 +79,27 @@
|
|
71
79
|
こういった場合は、やはり同一テーブルを副問い合わせなどするのでしょうか。
|
72
80
|
|
73
81
|
組み方、考え方をご教授頂けますと幸いです。
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
現在私自身は、下記のようなSQLの記述状況で手間取ってしまっています。
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
SELECT
|
90
|
+
|
91
|
+
ユーザーID
|
92
|
+
|
93
|
+
KJコード
|
94
|
+
|
95
|
+
COUNT(KJコード)
|
96
|
+
|
97
|
+
COUNT(ステータスコード)
|
98
|
+
|
99
|
+
FROM
|
100
|
+
|
101
|
+
テストテーブル
|
102
|
+
|
103
|
+
GROUP BY
|
104
|
+
|
105
|
+
KJコード
|
2
誤字脱字変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -30,7 +30,7 @@
|
|
30
30
|
|
31
31
|
このとき、ステータスコードには1~4のコードが登録されています。
|
32
32
|
|
33
|
-
そして、KJコードをG
|
33
|
+
そして、KJコードをGROUP BYで集約しつつ
|
34
34
|
|
35
35
|
KJコードをCOUNTした数と、
|
36
36
|
|
@@ -54,7 +54,7 @@
|
|
54
54
|
|
55
55
|
そのうえで最終的に、
|
56
56
|
|
57
|
-
ユーザーID、G
|
57
|
+
ユーザーID、GROUP BYしたKJコード、CASEか何かで比較したステータスコード
|
58
58
|
|
59
59
|
のデータを取得したいです。
|
60
60
|
|
@@ -64,7 +64,7 @@
|
|
64
64
|
|
65
65
|
|
66
66
|
|
67
|
-
初歩的で申し訳ありませんが、一つのテーブルでG
|
67
|
+
初歩的で申し訳ありませんが、一つのテーブルでGROUP BYしつつ上記のように二つの列をカウントするような記述が、
|
68
68
|
|
69
69
|
よくわかっていません。
|
70
70
|
|
1
誤字脱字変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -60,10 +60,6 @@
|
|
60
60
|
|
61
61
|
|
62
62
|
|
63
|
-
■■な機能を実装中に以下のエラーメッセージが発生しました。
|
64
|
-
|
65
|
-
|
66
|
-
|
67
63
|
### 発生している問題
|
68
64
|
|
69
65
|
|