我正在使用SSRS Report Builder 3.0,并且已经整理了一份报告,其中一部分使用查询来提取数据,并使用SQL中的NTILE()函数将其分为不同的摘要行。一切都很好,但现在老板想让我添加一个参数来决定报表是否应拉四分位,五分位,十等分,所以我想我将创建一个参数以将整数传递给NTILE(@ ntiles)功能,那简直是小菜一碟。
问题是,我创建了参数,它是一个INT并传递了(2,3,4,5,6,10)之类的值,并将其链接到报表生成器中的查询,但是当我保存使用NTILE(@ntiles)(我将参数命名为@ntiles)进行查询会引发错误:
The function 'ntile' takes only a positive int or bigint expression as its input.
有趣的是,该报表仍将运行,并且可以正确运行,就像该参数可以正常工作一样,但是我不知道为什么会抛出此错误并假装它无法正常工作。 Google并没有真正解决这个问题。这是Report Builder 3.0的错误还是我做错了?如何使错误消失?谢谢。
编辑:尝试NTILE(CAST(@ntiles as INT))抛出相同的错误,然后中断查询,使报表无法运行。奇怪的是,只将其更改回NTILE(@ntiles)仍然使它损坏。解决方法是将其更改为像NTILE(4)这样的真实INT,重新加载查询,然后返回并更改为NTILE(@ntiles)。保存该错误仍会引发错误,但不会阻止该解决方案运行报告。