ms-access - 查询中突然错误的运行总和值
问题描述
我正在使用相关子查询来生成名为 SumDemerits 的运行总和,以便检查数据输入错误。查询给出以下内容,其中包括原始表的副本:
DemeritID ID DemeritDate Amount DemeritType SumDemerits
83 42 5/23/2019 10 1 10
112 42 5/24/2019 -10 2 0
88 42 7/1/2019 2 1 2
89 42 7/9/2019 -2 1 0
90 42 7/10/2019 6 1 6
91 42 7/11/2019 3 1 9
92 42 7/12/2019 -2 1 7
97 42 7/13/2019 1 1 8
98 42 7/14/2019 2 1 10
99 42 7/15/2019 -10 2 0
120 42 8/8/2019 2 1 2
121 42 8/9/2019 1 1 3
122 42 8/10/2019 1 1 4
123 42 8/11/2019 1 1 5
125 42 8/12/2019 -2 1 3
126 42 8/13/2019 1 1 4
127 42 8/14/2019 -2 1 2
128 42 8/15/2019 -2 1 0
129 42 8/17/2019 0 1 0
130 42 8/18/2019 0 1 0
131 42 8/19/2019 4 1 4
132 42 8/20/2019 -2 1 2
133 42 8/21/2019 3 1 5
134 42 8/22/2019 2 1 7
135 42 8/23/2019 2 1 9
136 42 8/24/2019 -2 1 7
137 42 8/25/2019 1 1 8
138 42 8/26/2019 -2 1 6
139 42 8/27/2019 2 1 8
140 42 8/28/2019 1 1 9
141 42 8/29/2019 -2 1 7
142 42 8/30/2019 -2 1 13
146 42 8/31/2019 -2 1 9
147 42 9/1/2019 2 1 11
150 42 9/2/2019 2 1 15
151 42 9/3/2019 -2 1 5
152 42 9/4/2019 -2 1 3
148 42 9/5/2019 -2 1 1
154 42 9/6/2019 10 1 11
165 42 9/7/2019 -11 2 0
158 42 10/3/2019 3 1 3
159 42 10/4/2019 -2 1 1
160 42 10/5/2019 6 1 16
164 42 10/7/2019 3 1 19
171 42 10/8/2019 10 2 48
162 42 10/8/2019 10 2 48
166 42 11/14/2019 0 1 48
167 42 11/15/2019 1 1 49
168 42 11/18/2019 3 1 52
169 42 11/19/2019 6 1 58
170 42 11/20/2019 30 2 88
运行总 SumDemerits 按预期工作,直到 2019 年 8 月 30 日突然给出 13 而不是 5。这是我的查询的 sql,它只是复制原始表并添加 SumDemerits 列。
SELECT Demerits.DemeritID, Demerits.ID, Demerits.DemeritDate, Demerits.Amount, Demerits.DemeritType, (SELECT Sum(dupe.[Amount]) FROM Demerits as dupe WHERE dupe.DemeritDate <= [Demerits].[DemeritDate]) AS SumDemerits
FROM Demerits
WHERE (((Demerits.ID)=[ID]))
ORDER BY Demerits.DemeritDate;
生成可以剪切和粘贴的表格版本的 html 代码:
<style type="text/css">
.tg {border-collapse:collapse;border-spacing:0;}
.tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:black;}
.tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:black;}
.tg .tg-0pky{border-color:inherit;text-align:left;vertical-align:top}
</style>
<table class="tg">
<tr>
<th class="tg-0pky">DemeritID</th>
<th class="tg-0pky">BoyID</th>
<th class="tg-0pky">DemeritDate</th>
<th class="tg-0pky">Amount</th>
<th class="tg-0pky">DemeritType</th>
<th class="tg-0pky">SumDemerits</th>
</tr>
<tr>
<td class="tg-0pky">83</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">5/23/2019 0:00</td>
<td class="tg-0pky">10</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">10</td>
</tr>
<tr>
<td class="tg-0pky">112</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">5/24/2019 0:00</td>
<td class="tg-0pky">-10</td>
<td class="tg-0pky">2</td>
<td class="tg-0pky">0</td>
</tr>
<tr>
<td class="tg-0pky">88</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">7/1/2019 0:00</td>
<td class="tg-0pky">2</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">2</td>
</tr>
<tr>
<td class="tg-0pky">89</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">7/9/2019 0:00</td>
<td class="tg-0pky">-2</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">0</td>
</tr>
<tr>
<td class="tg-0pky">90</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">7/10/2019 0:00</td>
<td class="tg-0pky">6</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">6</td>
</tr>
<tr>
<td class="tg-0pky">91</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">7/11/2019 0:00</td>
<td class="tg-0pky">3</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">9</td>
</tr>
<tr>
<td class="tg-0pky">92</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">7/12/2019 0:00</td>
<td class="tg-0pky">-2</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">7</td>
</tr>
<tr>
<td class="tg-0pky">97</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">7/13/2019 0:00</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">8</td>
</tr>
<tr>
<td class="tg-0pky">98</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">7/14/2019 0:00</td>
<td class="tg-0pky">2</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">10</td>
</tr>
<tr>
<td class="tg-0pky">99</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">7/15/2019 0:00</td>
<td class="tg-0pky">-10</td>
<td class="tg-0pky">2</td>
<td class="tg-0pky">0</td>
</tr>
<tr>
<td class="tg-0pky">120</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">8/8/2019 0:00</td>
<td class="tg-0pky">2</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">2</td>
</tr>
<tr>
<td class="tg-0pky">121</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">8/9/2019 0:00</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">3</td>
</tr>
<tr>
<td class="tg-0pky">122</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">8/10/2019 0:00</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">4</td>
</tr>
<tr>
<td class="tg-0pky">123</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">8/11/2019 0:00</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">5</td>
</tr>
<tr>
<td class="tg-0pky">125</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">8/12/2019 0:00</td>
<td class="tg-0pky">-2</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">3</td>
</tr>
<tr>
<td class="tg-0pky">126</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">8/13/2019 0:00</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">4</td>
</tr>
<tr>
<td class="tg-0pky">127</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">8/14/2019 0:00</td>
<td class="tg-0pky">-2</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">2</td>
</tr>
<tr>
<td class="tg-0pky">128</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">8/15/2019 0:00</td>
<td class="tg-0pky">-2</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">0</td>
</tr>
<tr>
<td class="tg-0pky">129</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">8/17/2019 0:00</td>
<td class="tg-0pky">0</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">0</td>
</tr>
<tr>
<td class="tg-0pky">130</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">8/18/2019 0:00</td>
<td class="tg-0pky">0</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">0</td>
</tr>
<tr>
<td class="tg-0pky">131</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">8/19/2019 0:00</td>
<td class="tg-0pky">4</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">4</td>
</tr>
<tr>
<td class="tg-0pky">132</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">8/20/2019 0:00</td>
<td class="tg-0pky">-2</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">2</td>
</tr>
<tr>
<td class="tg-0pky">133</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">8/21/2019 0:00</td>
<td class="tg-0pky">3</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">5</td>
</tr>
<tr>
<td class="tg-0pky">134</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">8/22/2019 0:00</td>
<td class="tg-0pky">2</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">7</td>
</tr>
<tr>
<td class="tg-0pky">135</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">8/23/2019 0:00</td>
<td class="tg-0pky">2</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">9</td>
</tr>
<tr>
<td class="tg-0pky">136</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">8/24/2019 0:00</td>
<td class="tg-0pky">-2</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">7</td>
</tr>
<tr>
<td class="tg-0pky">137</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">8/25/2019 0:00</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">8</td>
</tr>
<tr>
<td class="tg-0pky">138</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">8/26/2019 0:00</td>
<td class="tg-0pky">-2</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">6</td>
</tr>
<tr>
<td class="tg-0pky">139</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">8/27/2019 0:00</td>
<td class="tg-0pky">2</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">8</td>
</tr>
<tr>
<td class="tg-0pky">140</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">8/28/2019 0:00</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">9</td>
</tr>
<tr>
<td class="tg-0pky">141</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">8/29/2019 0:00</td>
<td class="tg-0pky">-2</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">7</td>
</tr>
<tr>
<td class="tg-0pky">142</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">8/30/2019 0:00</td>
<td class="tg-0pky">-2</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">13</td>
</tr>
<tr>
<td class="tg-0pky">146</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">8/31/2019 0:00</td>
<td class="tg-0pky">-2</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">9</td>
</tr>
<tr>
<td class="tg-0pky">147</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">9/1/2019 0:00</td>
<td class="tg-0pky">2</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">11</td>
</tr>
<tr>
<td class="tg-0pky">150</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">9/2/2019 0:00</td>
<td class="tg-0pky">2</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">15</td>
</tr>
<tr>
<td class="tg-0pky">151</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">9/3/2019 0:00</td>
<td class="tg-0pky">-2</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">5</td>
</tr>
<tr>
<td class="tg-0pky">152</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">9/4/2019 0:00</td>
<td class="tg-0pky">-2</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">3</td>
</tr>
<tr>
<td class="tg-0pky">148</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">9/5/2019 0:00</td>
<td class="tg-0pky">-2</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">1</td>
</tr>
<tr>
<td class="tg-0pky">154</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">9/6/2019 0:00</td>
<td class="tg-0pky">10</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">11</td>
</tr>
<tr>
<td class="tg-0pky">165</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">9/7/2019 0:00</td>
<td class="tg-0pky">-11</td>
<td class="tg-0pky">2</td>
<td class="tg-0pky">0</td>
</tr>
<tr>
<td class="tg-0pky">158</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">10/3/2019 0:00</td>
<td class="tg-0pky">3</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">3</td>
</tr>
<tr>
<td class="tg-0pky">159</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">10/4/2019 0:00</td>
<td class="tg-0pky">-2</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">1</td>
</tr>
<tr>
<td class="tg-0pky">160</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">10/5/2019 0:00</td>
<td class="tg-0pky">6</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">16</td>
</tr>
<tr>
<td class="tg-0pky">164</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">10/7/2019 0:00</td>
<td class="tg-0pky">3</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">19</td>
</tr>
<tr>
<td class="tg-0pky">171</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">10/8/2019 0:00</td>
<td class="tg-0pky">10</td>
<td class="tg-0pky">2</td>
<td class="tg-0pky">48</td>
</tr>
<tr>
<td class="tg-0pky">162</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">10/8/2019 0:00</td>
<td class="tg-0pky">10</td>
<td class="tg-0pky">2</td>
<td class="tg-0pky">48</td>
</tr>
<tr>
<td class="tg-0pky">166</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">11/14/2019 0:00</td>
<td class="tg-0pky">0</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">48</td>
</tr>
<tr>
<td class="tg-0pky">167</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">11/15/2019 0:00</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">49</td>
</tr>
<tr>
<td class="tg-0pky">168</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">11/18/2019 0:00</td>
<td class="tg-0pky">3</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">52</td>
</tr>
<tr>
<td class="tg-0pky">169</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">11/19/2019 0:00</td>
<td class="tg-0pky">6</td>
<td class="tg-0pky">1</td>
<td class="tg-0pky">58</td>
</tr>
<tr>
<td class="tg-0pky">170</td>
<td class="tg-0pky">42</td>
<td class="tg-0pky">11/20/2019 0:00</td>
<td class="tg-0pky">30</td>
<td class="tg-0pky">2</td>
<td class="tg-0pky">88</td>
</tr>
</table>
解决方案
出现问题是因为原始查询有一个参数 ([ID]): WHERE (((Demerits.ID)=[ID])) 相关子查询还需要限制它按 ID 计数的行,否则它会计算其他的缺点如果它们在日期范围内,则为 ID。所以将子查询更改为: (SELECT Sum(dupe.[Amount]) FROM Demerits as dupe WHERE dupe.DemeritDate <= [Demerits].[DemeritDate] AND [ID] = [ID])
推荐阅读
- powershell - powerShell:获取“Select-Object -Property”布尔状态以在条件下使用
- python - Google Cloud Video Intelligence 以编程方式检查每月免费使用情况
- swift - 在 SwiftUI 中为日记应用程序制作日期查看器的解决方案
- reactjs - 如何根据键从 Typescript 中的 Dictionary 数据结构中删除一个条目?
- r - 使用数字数据在 ggplot 中制作条形图
- python - Gunicorn Workers 对性能没有影响
- laravel - Laravel-phpunit 测试抛出错误 - 没有活动事务
- hive - 如何将 01/23/2020 11:37:23 PM 更改为 ISO 日期格式
- algorithm - 这些嵌套循环的大 O 是什么
- entity-framework - 如何在 Entity Framework Core 中创建运行时迁移