首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL不能在SSRS中使用":=“

MySQL不能在SSRS中使用":=“
EN

Stack Overflow用户
提问于 2018-08-16 11:03:00
回答 1查看 41关注 0票数 0

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

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

例如,我希望索引小于10的结果显示在Tablix1中,索引>= 10将显示在Tablix2中,类似这样。

我的查询在MySQL中运行得很好,直到我用SSRS运行它时,它都会出现错误。看起来SSRS不支持@curRow := @curRow + 1 AS row_number中的:=运算符。如果我从操作符中删除冒号:,错误就会消失,但行号不会递增。

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

EN

回答 1

Stack Overflow用户

发布于 2018-08-16 13:34:47

我从here找到了解决此问题的方法

免责声明:

  1. 不能在旧版本的mySQL上运行它基于使用的变量只在时间改变时重置。
  2. 如果在同一微秒(百万分之一秒)内在两个不同的地方调用函数,输出将不会像预期的那样。变量不会重置,输出也不会从1开始计数。
  3. 如果在同一查询中多次运行该函数,则每次运行时它都会递增,因此可能每行都会递增多次。

解决方法是创建一个MySQL函数来生成行号:

代码语言:javascript
运行
复制
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 ;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51869041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档