2017-04-17 49 views
1

我目前正在在SSRS的报告,我有以下几点:SSRS SUM列与字符串和整数

Student Day1 Day2 Day3 Day4 
----------------------------- 
Student A 1 1  0 L 
Student B 2 3  1  
Student C 1 0  L 1 
----------------------------- 
Total  4 3  1 1 <------ this is the result im trying to get 

这是出席报告其中:

1 =当前

0 =缺席

1 - 5 =#家庭成员参加

空白值= “”值,出勤不采取

L =迟到

目前,我得到一个#ERROR当我试图总结列。是否有方法可以在不包含空值和字符串'L'的情况下对列进行求和。我搜索这个论坛,并没有任何运气。有什么建议么?谢谢!

编辑:我想澄清的是,报告假设显示空白值和'L'字符串值。不幸的是,我无法对数据源进行更改。

+0

如果使用报表设计器找不到其他解决方案,我通常会做的是从我的SQL查询/视图中获取包括总和的确切数据,报表编写器会将其写出。 –

回答

0

你可以做到这一点在两端

SQL - SUM(CASE WHEN Day1 = '1' THEN 1 ELSE 0 END) AS Day1Total

SSRS Func键。 - 多“真”值

=SUM(IIF(Fields!Day1.Value = "1", 1, 
IIF(Fields!Day1.Value = "2", 2, 
IIF(Fields!Day1.Value = "3", 3, 
IIF(Fields!Day1.Value = "4", 4, 
IIF(Fields!Day1.Value = "5", 5,0)))))) 

的SSRS功能是检查指定字段的值,以查看它们是否匹配指定的值(“1”),如果这是真的,那将返回,如果值1它是假的,它将是0.一旦它检查了每个值,它将把所有这些数据集合在一起。

+0

您好bjones感谢我使用SUM尝试使用SUM(IIF(Fields!Day1.Value = 1,1,0))的输入,并且仍然收到#error。你能帮我理解这个函数在做什么吗?谢谢 – SQLnoob

+0

你在前面加了'='吗?请参阅编辑。 – BJones

+0

也许周围的价值引号。 – BJones

1

在报表的数据源,而不是包括Day1,加入

CASE Day1 WHEN '1' THEN 1 ELSE 0 END intDay1 
+0

你好Skippy非常感谢,我不能对数据源进行更改。尽管使用Case语句会使它更容易计算总计 – SQLnoob