我想为查询结果的每一行分配一个索引,我遵循this method来实现。
此索引号仅用于显示,不用于显示目的,在SSRS中使用RowNumber()
就足够了。相反,我将使用该索引号进行过滤。另请注意,SSRS不能在过滤器表达式中使用RowNumber()
。
例如,我希望索引<10的结果显示在tablix 1中,索引> = 10的结果将显示在tablix 2中,类似这样。
我的查询在MySQL中工作正常,直到我使用SSRS运行它,它才会显示错误。看起来SSRS在:=
中不支持@curRow := @curRow + 1 AS row_number
运算符。如果我从运算符中删除了冒号:
,该错误消失了,但行号却没有增加。
为什么SSRS不支持:=
运算符?还有其他解决方法吗?
答案 0 :(得分:0)
我从here
找到了解决此问题的方法免责声明:
- 不适用于旧版本的mySQL,它基于使用 仅在时间变化时才重置的变量。
- 如果在同一位置的2个不同位置调用了该函数 微秒(百万分之一秒),输出将不像 预期。变量不会重置,输出不会启动 从1开始计数。
- 如果您在同一查询中多次运行该函数,它将 每次运行时都会递增,因此每行可能多次。
解决方法是创建一个MySQL函数以生成行号:
DROP FUNCTION IF EXISTS rownum;
DELIMITER $$
CREATE FUNCTION rownum()
RETURNS int(11)
BEGIN
set @prvrownum=if(@ranklastrun=CURTIME(6),@prvrownum+1,1);
set @ranklastrun=CURTIME(6);
RETURN @prvrownum;
END $$
$$
DELIMITER ;