回答編集履歴
8
修正
test
CHANGED
@@ -74,25 +74,41 @@
|
|
74
74
|
|
75
75
|
--
|
76
76
|
|
77
|
-
|
77
|
+
集計した後にJoinすべきだったので修正
|
78
78
|
|
79
79
|
```SQL
|
80
80
|
|
81
|
-
SELECT
|
81
|
+
SELECT 会員マスター.会員番号, 会員マスター.名前, 会員マスター.性別, 請求金額計-Nz(入金額計) AS 不足額
|
82
82
|
|
83
|
-
FROM
|
83
|
+
FROM (会員マスター INNER JOIN (
|
84
84
|
|
85
|
-
|
85
|
+
SELECT 会員番号, Sum(請求金額) AS 請求金額計
|
86
86
|
|
87
|
-
|
87
|
+
FROM 課金記録
|
88
88
|
|
89
|
-
|
89
|
+
WHERE 支払期限<#2018/5/1#
|
90
90
|
|
91
|
-
|
91
|
+
GROUP BY 会員番号
|
92
92
|
|
93
|
-
|
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
|
-
H
|
109
|
+
WHERE (請求金額計-Nz(入金額計))>0
|
110
|
+
|
111
|
+
ORDER BY 会員マスター.会員番号
|
96
112
|
|
97
113
|
```
|
98
114
|
|
7
追記
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
推敲
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
追記
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
修正
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
|
-
)
|
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
修正
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
修正
test
CHANGED
@@ -34,7 +34,7 @@
|
|
34
34
|
|
35
35
|
```SQL
|
36
36
|
|
37
|
-
SELECT 会員マスター.会員番号, 会員マスター.名前, 会員マスター.性別,
|
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 (
|
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
推敲
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
|
|