2012-11-26 61 views
0

我正在将其中一台计算机扔出窗外。Crystal Reports将字符串转换为数字的问题

我正在处理涉及Crystal Reports(版本10)和Oracle数据库(11g)的问题。

我正在从数据库中返回一个字符串(varcahr2(50))的视图,它实际上是一个数字,当在这个视图上运行基本的SELECT *查询时,我以000000000000100.00的格式返回数字。

当在Crystal Reports中使用此视图时,我可以查看字段数据,但由于数据不是数字,因此我无法对其进行求和。

我开始尝试在字段上使用ToNumber,Crystal的回应是该字符串不是数字文本。好吧,我回到视图并运行了TO_NUMBER,当它用于水晶时,它没有返回任何结果。我还试图在视图上运行TO_CHAR,以便我可以将该字段导入为文本,然后执行ToNumber,但与TO_NUMBER一样,没有显示任何记录。

我已经开始了新的报道,我已经开始了新的观点。徒劳无功。

这似乎与我如何检索视图的数据有关。

简而言之,我从查看两个字段的外键和值字段的表中提取数据。

SELECT PRIMARY_KEY, 
     NVL(MAX(DECODE(FOREIGN_KEY, FOREIGN_KEY_OF_VALUE_I_NEED, VALUE_FIELD)), 0) 
    FROM MY_TABLE 
    GROUP BY PRIMARY_KEY 

当我试图把修改使用TO_NUMBER或我已经用它周围的VALUE_FIELD本身和整个表达式TO_CHAR结果,枯萎的工作方式时,在SQL语句中运行。但是,在使用视图时,对语句的任何TO_NUMBER或TO_CHAR修改都不会在Crystal Reports中返回任何结果。

这个问题的全部问题都是我忽略的勾选框或等价物。

任何有关如何解决这个问题或我可以去寻找答案的建议将不胜感激。

+0

你想用'DECODE'语句做什么?如果相等,则使用'VALUE_FIELD'或其他东西? – craig

+0

解码是为我从中提取数值的表格,它是一个传统设计,但本质上该表格包含所有类型的值,而外键描述了值字段的值。例如,如果桌子上有人,人的高度,人的年龄和人的姓名都会得到自己的密钥,然后可以通过使用联系人表的键进行搜索来使用该表,每个联系人获得身高,年龄和姓名然后通过它们的关键来区分它们。不是很优雅,但不是我可以改变的东西。 – ashcanschool

回答

0

事实证明,Crystal Reports如何处理来自数据库的查询。我需要做的只是在另一个Select语句中包含SQL语句,并在该列的这个实例上应用TO_NUMBER,以便Crystal Reports将列值识别为数字。

希望这可以帮助别人,因为这是一个下午的可怕浪费。

0

我跑这个查询在SQL Developer中:

SELECT xxx, to_number(xxx) yyy 
FROM (
    SELECT '000000000000100.00' XXX FROM DUAL 
) 

这就造成:

XXX     YYY 
000000000000100.00 100 

如果你的领域是真正的数字,你可以创建一个SQL表达式字段来执行转换:

-- {%NUMBER_FIELD} 
TO_NUMBER(TABLE.VALUE_FIELD) 
+0

我确实在该字段上运行了TO_NUMBER,并通过询问确认它的数据类型来确认它确实是一个数字。我的问题不是SQL不起作用。正是在使用TO_NUMBER时,Crystal Reports没有显示任何结果 – ashcanschool