Report Builder筛选矩阵至最大日期时出错的解决方法咨询
Report Builder矩阵筛选报错解决方案
测试数据
create table #Sales (ID INT,Amount Money, Dates Date, Product varchar(50)) insert into #Sales values (1,12,'2023-01-03','M & S Trouser'),(2,22,'2023-01-01','Spoke'),(3,13,'2023-01-01','Peddal'), (4,30,'2023-01-05','Mango'),(5,30,'2023-01-03','Milk'),(6,11,'2023-01-03','Wheel'), (7,20,'2023-01-05','Tyres'),(8,24,'2023-01-03','Samsung TV'),(9,29,'2023-01-01','Clark'), (10,13,'2023-01-03','Sardine'),(11,22,'2023-01-03','TM Lewis'),(12,27,'2023-01-03','Sonny Sound System'), (13,14,'2023-01-01','Bulbs'),(14,11,'2023-01-05','Star Beer'),(15,30,'2023-01-03','Apple Tab'), (16,15,'2023-01-03','Clutch'),(17,14,'2023-01-02','Asda shoes'),(18,27,'2023-01-05','Overtin') select * from #Sales drop table #Sales
排查与解决步骤
- 确认筛选作用层级:矩阵的筛选可应用于整个矩阵、行组、列组或单元格。确保筛选设置在正确层级,比如要筛选日期,优先在行组/数据集层面设置,而非单个单元格。
- 校验筛选表达式:
- 字段名称必须与数据集字段完全一致(注意部分数据源区分大小写),比如你的日期字段是
Dates,不要误写为Date。 - 保证数据类型匹配:筛选日期时,使用日期类型值,或用转换函数统一类型,例如用
=CDate("2023-01-03")替代字符串格式的日期值。
- 字段名称必须与数据集字段完全一致(注意部分数据源区分大小写),比如你的日期字段是
- 检查数据集筛选冲突:若数据集本身已有筛选规则,矩阵筛选可能与之冲突。先移除矩阵筛选,确认数据正常后再逐步添加筛选条件。
- 匹配分组与筛选逻辑:如果矩阵按某字段分组(比如
Dates),筛选条件不能破坏分组逻辑,确保筛选字段与分组字段逻辑兼容,避免分组后无数据返回。 - 依据错误提示调整:运行报表时的具体错误信息(如“数据类型不匹配”“字段不存在”)是关键,根据提示针对性修正配置。
针对测试数据的示例配置(以筛选2023-01-03的记录为例)
如果期望输出该日期下的产品与金额,可按以下两种方式配置:
方式1:矩阵层面设置筛选
- 将矩阵行组设为
Dates,数据区域放置Amount(可设置求和等聚合方式)。 - 进入矩阵筛选属性:
- 添加筛选条件,选择
Dates字段,运算符选“等于”,值设置为=CDate("2023-01-03")。
- 添加筛选条件,选择
方式2:数据集层面过滤(更稳定)
直接修改SQL查询,在数据集层面完成筛选,减少矩阵配置复杂度:
create table #Sales (ID INT,Amount Money, Dates Date, Product varchar(50)) insert into #Sales values (1,12,'2023-01-03','M & S Trouser'),(2,22,'2023-01-01','Spoke'),(3,13,'2023-01-01','Peddal'), (4,30,'2023-01-05','Mango'),(5,30,'2023-01-03','Milk'),(6,11,'2023-01-03','Wheel'), (7,20,'2023-01-05','Tyres'),(8,24,'2023-01-03','Samsung TV'),(9,29,'2023-01-01','Clark'), (10,13,'2023-01-03','Sardine'),(11,22,'2023-01-03','TM Lewis'),(12,27,'2023-01-03','Sonny Sound System'), (13,14,'2023-01-01','Bulbs'),(14,11,'2023-01-05','Star Beer'),(15,30,'2023-01-03','Apple Tab'), (16,15,'2023-01-03','Clutch'),(17,14,'2023-01-02','Asda shoes'),(18,27,'2023-01-05','Overtin') select * from #Sales where Dates = '2023-01-03' drop table #Sales
内容的提问来源于stack exchange,提问作者JonWay
相关产品推荐
相关产品推荐

