我有三个嵌套的ROW组: -
对于每种情况,第一个依赖于数据集中的字段是真还是假。这是错误最差的地方。第二个嵌套在第一个上,基于案例中的组变量(1到多个),第三个是案例的引用号。
总和不适用于由连接产生的cloumn,具体取决于第二组的ID。它似乎拉出正确的值,但乘以案例的数量。我可以在这里将最后一个嵌套组(ref#)中的案例数除以得到正确的值。尝试使用“计数”,空白,添加总计...
如果我尝试将列与“= Sum(ReportItems!Textbox231.Value)”相加,则产生: -
textrun的值表达式'Textbox232.Paragraphs [0] .TextRuns [0]'在报表项上使用聚合函数。聚合函数只能用于页眉和页脚中包含的报表项。
对于所有三个嵌套行组中的非连接值,总和都可以正常工作。但是对于连接的值,它们是一个数量级的。这是为什么?
SUM not working for 3rd column
SUM产生有线结果
SELECT DISTINCT
答案 0 :(得分:1)
这是发生此类问题的常见原因。
SUM错误的可能原因是您的选择中的DISTINCT隐藏了基础查询中的重复项。由于SUM在distinct之前执行,因此它将在DISTINCT过滤掉之后看不到的结果汇总。
而不是DISTINCT使用GROUP BY查询,那么您可以创建一个没有重复项的基本查询(您不必使用DISTINCT隐藏)或者如果您无法删除重复项,通过执行MIN,MAX或AVG在显示列之前聚合列。
我很乐意提供更多帮助,但您的问题中没有足够的信息可以在我的计算机上重现问题。
SUM可以返回意外结果还有其他原因:通常是隐式转换(SQL服务器决定意外的数据类型并对数字进行舍入),在某些情况下是在WHERE条件之前或之后执行的CASE子句。但这些似乎不是问题所在。
示例
DECLARE @T TABLE (ID INT IDENTITY(1,1) PRIMARY KEY CLUSTERED, NumVal INT)
DECLARE @i INT
SET @i = 1
WHILE @i < 1000
BEGIN
INSERT INTO @T (NumVal) VALUES (@i)
IF RIGHT (CAST (@i AS VARCHAR(12)),1) = 7
BEGIN INSERT INTO @T (NumVal) VALUES (@i) END
SET @i = @i +1
END
SELECT DISTINCT NumVal, SUM (NumVal) FROM @T GROUP BY NumVal
在上面的示例中,我在表格中插入了999个不同的条目,但重复了任何以7结尾的数字。选择不同给人的印象是只有999个条目,而总和则添加以7结尾的数字。你的情况可能更复杂,但我想在这里展示的是底层的副本在DISTINCT中变得不可见,并以SUM重新出现:
NumVal Sum
1 1
2 2
3 3
4 4
5 5
6 6
7 14
8 8
9 9
10 10
11 11
12 12
13 13
14 14
15 15
16 16
17 34
18 18
19 19
20 20
21 21
22 22
23 23
24 24
25 25
26 26