MySQL无法在SSRS中使用“:=”

时间:2018-08-16 03:03:00

标签: mysql reporting-services ssrs-2008-r2

我想为查询结果的每一行分配一个索引,我遵循this method来实现。

此索引号仅用于显示,不用于显示目的,在SSRS中使用RowNumber()就足够了。相反,我将使用该索引号进行过滤。另请注意,SSRS不能在过滤器表达式中使用RowNumber()

例如,我希望索引<10的结果显示在tablix 1中,索引> = 10的结果将显示在tablix 2中,类似这样。

我的查询在MySQL中工作正常,直到我使用SSRS运行它,它才会显示错误。看起来SSRS在:=中不支持@curRow := @curRow + 1 AS row_number运算符。如果我从运算符中删除了冒号:,该错误消失了,但行号却没有增加。

为什么SSRS不支持:=运算符?还有其他解决方法吗?

1 个答案:

答案 0 :(得分:0)

我从here

找到了解决此问题的方法
  

免责声明:

     
      
  1. 不适用于旧版本的mySQL,它基于使用   仅在时间变化时才重置的变量。
  2.   
  3. 如果在同一位置的2个不同位置调用了该函数   微秒(百万分之一秒),输出将不像   预期。变量不会重置,输出不会启动   从1开始计数。
  4.   
  5. 如果您在同一查询中多次运行该函数,它将   每次运行时都会递增,因此每行可能多次。
  6.   

解决方法是创建一个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 ;