gpt4 book ai didi

mysql - 在 SSRS/MySQL 上检索行数

转载 作者:行者123 更新时间:2023-11-29 00:29:10 26 4
gpt4 key购买 nike

我正在使用通过 ODBC 链接到 MySQL 的 SSRS。我的查询按客户汇总付款金额,并按金额 desc 排序。我想用它在 SSRS 中创建一个排行榜,显示排名,并且只包括前 10 名客户。

选项 1:在 SQL 中对我的组查询执行附加查询,添加行号。

选项 2:在 SSRS 中添加计算字段。

选项 1 看起来很笨重,所以从选项 2 开始;我在名为“Rank”的数据集中添加了一个计算字段,定义为 =RowNumber("DataSet1")

我在名为“Rank”的数据集中添加了一个计算字段,定义为:=RowNumber("DataSet1")

但是我得到了以下错误:

The expression used for the calculated field 'Rank' includes an aggregate, RowNumber, RunningValue, Previous or lookup function. Aggregate, RowNumber, RunningValue, Previous and lookup functions cannot be used in calculated field expressions.

因此,我随后将其添加到实际的 tablix 中,并且能够使排名正确显示。(当我这样做时,它会自动向我的数据集添加一个额外的列。

然后我想过滤前 10 位客户。

我首先在这个新领域尝试了“后 10 名”,但没有奏效。 (似乎这个字段在实际数据集中全为零。)

然后我尝试按“前 10 个”支付金额,但收到过滤器仅支持整数的错误。

所以我尝试使用 CAST 和 Convert 在 MySQL 中将付款金额转换为整数,但它们不支持转换为整数,而且 SSRS 不喜欢“SIGNED”或任何其他选项。

然后我开始尝试选项 1,即将查询构建到 MySQL 中。我补充说:

SET @rank=0; 
SELECT @rank:=@rank+1 AS Rank, ...

这在 MySQL 中有效,但是当我将该查询粘贴到 SSRS 上的报告定义中时出现错误。

有什么想法吗?

最佳答案

与其在单独的语句中设置 @rank=0,不如尝试在交叉连接到主查询的子查询中设置它 - 如下所示:

SELECT @rank:=@rank+1 AS Rank, ...
FROM (SELECT @rank:= 0) r
CROSS JOIN ...

关于mysql - 在 SSRS/MySQL 上检索行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17428672/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com