【问题标题】:SQL Division shows as null in SSRSSQL Division 在 SSRS 中显示为 null
【发布时间】:2020-06-12 11:41:23
【问题描述】:

我正在尝试在 SQL 中进行一些划分并将它们放入 SSRS 表对象中。

此 SQL 有效,结果为 0.6

select testcol2/5 testcol from (select 3 testcol2 from dual)

但是当我尝试反其道而行之时(因此与列分开),SSRS 表 显示没有值 而不是 1.6:

select  5/testcol2 testcol from (select 3 testcol2 from dual)

请有人帮助我如何让 SSRS 向我显示 1.6 的值?

【问题讨论】:

  • 如果从 SSRS 中执行数据集查询,返回什么?
  • @AlanSchofield 我只有基于文本的设计器可用,只有使用 SSRS 对象才能检查结果
  • 尝试将静态值转换为兼容的十进制或浮点数据类型。 select CAST(5 as float) / testcol2 testcol from (select 3 testcol2 from dual) 或者只是为了测试,只需将小数位添加到静态值 select 5.00 / testcol2 testcol from (select 3 testcol2 from dual)
  • @AlanSchofield 谢谢,但这并不能解决问题,我很确定代码会产生结果,SSRS 没有显示它们
  • 如果文本框上没有格式,那么将显示原始数据。 SSRS 没有做任何不同的事情,它只是从数据集中获取数据并显示它。你是手动编辑 RDL 文件还是这个 RDLC ?

标签: sql oracle reporting-services ssrs-2012 reportbuilder3.0


【解决方案1】:

这很奇怪,但我能够重现它。当我在其他工具中运行 SQL 时,我可以确认结果是 1.666666...,但 SSRS 没有显示它。

这是一个有效的解决方案。更改 SQL 以对结果进行四舍五入:

select ROUND(5/testcol2, 2) as testcol2 
from (select 3 testcol2 from dual)

现在 SSRS 将按预期显示 1.67。它会像往常一样支持您在文本框中放置的任何其他数字格式。

编辑: 为了满足我的好奇心,我又挖了一点。我使用 Oracle 中的 dump 函数确定它使用的长度为 193。如果您使用最多 28 位小数进行四舍五入,则此方法有效。除此之外,SSRS 不会显示该值。

【讨论】:

  • 这很奇怪。我使用 SSRS 的时间比我想记得的要长,而且我还没有遇到过这种情况。如果您只是格式化文本框但将原始重复值保留在数据集中会发生什么? (抱歉现在没时间测试!)
  • @AlanSchofield 这里也一样。格式化文本框无济于事,我认为这是 SSRS 可以接受的精度限制。 “没有人需要超过 28 位小数”对吗?大声笑
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多