回答編集履歴

8

修正

2018/03/26 20:20

投稿

sazi
sazi

スコア25173

test CHANGED
@@ -74,25 +74,41 @@
74
74
 
75
75
  --
76
76
 
77
- 纏め方が分かり易かったかもしれません。
77
+ 集計し後にJoinすべきだったので修正
78
78
 
79
79
  ```SQL
80
80
 
81
- SELECT 会員マスター.会員番号, 会員マスター.名前, 会員マスター.性別, Sum(請求金額)-Sum(Nz(入金額)) AS 不足額
81
+ SELECT 会員マスター.会員番号, 会員マスター.名前, 会員マスター.性別, 請求金額-Nz(入金額) AS 不足額
82
82
 
83
- FROM (会員マスター INNER JOIN 課金記録
83
+ FROM (会員マスター INNER JOIN (
84
84
 
85
- ON 会員マスター.会員番号=課記録.会員番号
85
+ SELECT 会員番号, Sum(請求額) AS 請求金額計
86
86
 
87
- ) LEFT JOIN 支払い記録
87
+ FROM 課金記録
88
88
 
89
- ON 会員マスター.会員番号=支払い記録.会員番号
89
+ WHERE 支払期限<#2018/5/1#
90
90
 
91
- WHERE 課金記録.支払期限<#2018/5/1#
91
+ GROUP BY 会員番号
92
92
 
93
- GROUP BY 会員マスター.会員番号, 会員マスター.名前, 会員マスター.性別
93
+ ) AS Q請求額計
94
94
 
95
+ ON 会員マスター.会員番号 = Q請求額計.会員番号
96
+
97
+ ) LEFT JOIN (
98
+
99
+ SELECT 会員番号, Sum(入金金額) AS 入金額計
100
+
101
+ FROM 支払い記録
102
+
103
+ GROUP BY 会員番号
104
+
105
+ ) AS Q入金額計
106
+
107
+ ON 会員マスター.会員番号 = Q入金額計.会員番号
108
+
95
- HAVING (Sum(請求金額)-Sum(Nz(入金額)))>0
109
+ WHERE (請求金額-Nz(入金額))>0
110
+
111
+ ORDER BY 会員マスター.会員番号
96
112
 
97
113
  ```
98
114
 

7

追記

2018/03/26 20:20

投稿

sazi
sazi

スコア25173

test CHANGED
@@ -95,3 +95,7 @@
95
95
  HAVING (Sum(請求金額)-Sum(Nz(入金金額)))>0
96
96
 
97
97
  ```
98
+
99
+ ※Nz(item)はitemがNullの場合、Itemの属性に合わせた値を返却します。
100
+
101
+ 属性が数値なら0、文字なら""(空文字)

6

推敲

2018/03/26 16:32

投稿

sazi
sazi

スコア25173

test CHANGED
@@ -82,7 +82,7 @@
82
82
 
83
83
  FROM (会員マスター INNER JOIN 課金記録
84
84
 
85
- ON 課金記録.会員番号=会員マスター.会員番号
85
+ ON 会員マスター.会員番号=課金記録.会員番号
86
86
 
87
87
  ) LEFT JOIN 支払い記録
88
88
 

5

追記

2018/03/26 16:27

投稿

sazi
sazi

スコア25173

test CHANGED
@@ -67,3 +67,31 @@
67
67
  求める結果は「Q_入金不足者」になります。
68
68
 
69
69
  尚、「課金記録」と「支払い記録」については、会員番号のインデックスが無ければ作成した方が早くなるでしょう。
70
+
71
+
72
+
73
+ 追記
74
+
75
+ --
76
+
77
+ 纏めた方が分かり易かったかもしれません。
78
+
79
+ ```SQL
80
+
81
+ SELECT 会員マスター.会員番号, 会員マスター.名前, 会員マスター.性別, Sum(請求金額)-Sum(Nz(入金金額)) AS 不足額
82
+
83
+ FROM (会員マスター INNER JOIN 課金記録
84
+
85
+ ON 課金記録.会員番号=会員マスター.会員番号
86
+
87
+ ) LEFT JOIN 支払い記録
88
+
89
+ ON 会員マスター.会員番号=支払い記録.会員番号
90
+
91
+ WHERE 課金記録.支払期限<#2018/5/1#
92
+
93
+ GROUP BY 会員マスター.会員番号, 会員マスター.名前, 会員マスター.性別
94
+
95
+ HAVING (Sum(請求金額)-Sum(Nz(入金金額)))>0
96
+
97
+ ```

4

修正

2018/03/26 16:26

投稿

sazi
sazi

スコア25173

test CHANGED
@@ -34,17 +34,17 @@
34
34
 
35
35
  ```SQL
36
36
 
37
- SELECT 会員マスター.会員番号, 会員マスター.名前, 会員マスター.性別, 請求金額計-入金額計 AS 不足額
37
+ SELECT 会員マスター.会員番号, 会員マスター.名前, 会員マスター.性別, 請求金額計-NZ(入金額計) AS 不足額
38
38
 
39
39
  FROM (会員マスター INNER JOIN Q_請求額計
40
40
 
41
41
  ON 会員マスター.会員番号 = Q_請求額計.会員番号
42
42
 
43
- ) INNER JOIN Q_入金額計
43
+ ) LEFT JOIN Q_入金額計
44
44
 
45
45
  ON 会員マスター.会員番号 = Q_入金額計.会員番号
46
46
 
47
- WHERE (請求金額計-入金額計)>0
47
+ WHERE (請求金額計-NZ(入金額計))>0
48
48
 
49
49
  ORDER BY 会員マスター.会員番号
50
50
 
@@ -53,6 +53,8 @@
53
53
  ```
54
54
 
55
55
  ※差し引きが逆だったので、修正
56
+
57
+ ※入金の一切ない人の考慮が漏れていたので、修正
56
58
 
57
59
 
58
60
 

3

修正

2018/03/26 15:42

投稿

sazi
sazi

スコア25173

test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
  ```
20
20
 
21
- [Q_入金実績]
21
+ [Q_入金額計]
22
22
 
23
23
  ```SQL
24
24
 
@@ -40,9 +40,9 @@
40
40
 
41
41
  ON 会員マスター.会員番号 = Q_請求額計.会員番号
42
42
 
43
- ) INNER JOIN Q_入金実績
43
+ ) INNER JOIN Q_入金額計
44
44
 
45
- ON 会員マスター.会員番号 = Q_入金実績.会員番号
45
+ ON 会員マスター.会員番号 = Q_入金額計.会員番号
46
46
 
47
47
  WHERE (請求金額計-入金額計)>0
48
48
 

2

修正

2018/03/26 15:40

投稿

sazi
sazi

スコア25173

test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
  ```SQL
36
36
 
37
- SELECT 会員マスター.会員番号, 会員マスター.名前, 会員マスター.性別, 金額計-請求金額計 AS 不足額
37
+ SELECT 会員マスター.会員番号, 会員マスター.名前, 会員マスター.性別, 請求金額計-金額計 AS 不足額
38
38
 
39
39
  FROM (会員マスター INNER JOIN Q_請求額計
40
40
 
@@ -44,13 +44,15 @@
44
44
 
45
45
  ON 会員マスター.会員番号 = Q_入金実績.会員番号
46
46
 
47
- WHERE (金額計-請求金額計)>0
47
+ WHERE (請求金額計-金額計)>0
48
48
 
49
49
  ORDER BY 会員マスター.会員番号
50
50
 
51
51
  ;
52
52
 
53
53
  ```
54
+
55
+ ※差し引きが逆だったので、修正
54
56
 
55
57
 
56
58
 

1

推敲

2018/03/26 15:35

投稿

sazi
sazi

スコア25173

test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  FROM 課金記録
14
14
 
15
- WHERE 支払期限<#2018/5/1/#
15
+ WHERE 支払期限<#2018/5/1#
16
16
 
17
17
  GROUP BY 会員番号;
18
18