我正在使用通过 ODBC 链接到 MySQL 的 SSRS。我的查询按客户汇总付款金额,并按金额降序排序。我想用它在 SSRS 中创建一个排行榜,显示排名,并且只包括前 10 名客户。
选项 1: 在 SQL 中对我的组查询执行附加查询,添加行号。
选项 2: 在 SSRS 中添加计算字段。
选项 1 看起来很笨重,所以从选项 2 开始;我在数据集中添加了一个名为“Rank”的计算字段,定义为=RowNumber("DataSet1")
我在数据集中添加了一个名为“Rank”的计算字段,定义为:=RowNumber("DataSet1")
但我收到以下错误:
用于计算字段“Rank”的表达式包括聚合、RowNumber、RunningValue、Previous 或查找函数。Aggregate、RowNumber、RunningValue、Previous 和查找函数不能在计算字段表达式中使用。
因此,然后我将其添加到实际的 tablix 中,并且能够正确显示排名。(当我这样做时,它会自动向我的数据集添加一个额外的列。
然后我想过滤前 10 名客户。
我首先在这个新领域尝试了“倒数 10”,但没有成功。(似乎该字段在实际数据集中全为零。)
然后我尝试了支付金额的“前 10”,但收到过滤器仅支持整数的错误。
所以我尝试在 MySQL 中使用 CAST 和 Convert 将付款金额转换为 Integer,但它们不支持转换为 Integer,并且 SSRS 不喜欢“SIGNED”或任何其他选项。
然后我开始尝试选项 1,它将查询构建到 MySQL 中。我补充说:
SET @rank=0;
SELECT @rank:=@rank+1 AS Rank, ...
这在 MySQL 中有效,但是当我将该查询粘贴到 SSRS 上的报告定义中时出现错误。
有任何想法吗?